Я не уверен, что то, что я хочу сделать, возможно. У меня есть данные, которые выглядят так:
{
"Actor1Name": "PERSON",
"Actor2Name": "OTHERPERSON"
}
Я использую copy_to, чтобы заполнить вторичное поле ActorNames обоими значениями.
Я пытаюсь создать возможность ввода текста, когда пользователь может начать вводить имя, и оно будет заполнено лучшими совпадениями для этого префикса. Я хочу, чтобы он выполнял поиск по обоим полям актера. Единственная проблема заключается в том, что при поиске по именам актеров я получаю оба значения, даже если совпадает только одно из них. Это означает, что если я ищу префикс O, я получу как ДРУГОЙ ЛИЦ (желаемый), так и ЧЕЛОВЕК (нежелательный) в своих результатах на основе вышеуказанного документа.
Мое текущее решение состоит в том, чтобы запустить 2 агрегата и объединить их на стороне клиента, но возможно ли сделать это исключительно в ES?
Текущий запрос:
{
"query": {
"prefix": {
"ActorNames": "O"
}
},
"aggs": {
"actor1": {
"filter": {
"prefix": {
"Actor1Name": "O"
}
},
"aggs": {
"actor1": {
"terms": {
"field": "Actor1Name",
}
}
}
},
"actor2": {
"filter": {
"prefix": {
"Actor2Name": "O"
}
},
"aggs": {
"actor2": {
"terms": {
"field": "Actor2Name",
}
}
}
}
}
}