Я не уверен, что то, что я хочу сделать, возможно.У меня есть данные, которые выглядят так:
{
"Actor1Name": "PERSON",
"Actor2Name": "OTHERPERSON"
}
Я использую copy_to для заполнения вторичного поля, ActorNames, обоими значениями.
Я пытаюсь создать возможность typeahead, гдеПользователь может начать вводить имя, и оно будет заполнено самыми популярными для этого префикса.Я хочу, чтобы поиск по обоим полям актера.Единственная проблема заключается в том, что при поиске по ActorNames я получаю оба значения, даже если совпадает только одно.Это означает, что, если я ищу префикс O, я получу OTHERPERSON (желательно) и PERSON (нежелательно) в моих результатах, основанных на приведенном выше документе.
Мое текущее решение - запустить 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",
}
}
}
}
}
}