Ответ 1
Вам нужна агрегация top_hits
.
И для вашего конкретного случая:
{
"query": {
"multi_match": {
...
}
},
"aggs": {
"top-uids": {
"terms": {
"field": "uid"
},
"aggs": {
"top_uids_hits": {
"top_hits": {
"sort": [
{
"_score": {
"order": "desc"
}
}
],
"size": 1
}
}
}
}
}
}
Приведенный выше запрос выполняет ваш запрос multi_match
и объединяет результаты на основе uid
. Для каждой корзины uid возвращается только один результат, но после того, как все документы в _score
были отсортированы на основе _score
в порядке убывания.