Я не думаю, что можно получить именно то, что вы хотите. По сути, вы делаете группирование (объединение терминов) в поле местоположения. Поскольку невозможно точно узнать, сколько у вас локаций, количество групп не ограничено. Таким образом, если есть 101 группа и вы возвращаете одно имя на группу, вы получите 101 результат. И если мы фильтруем до 100 максимальных результатов, какую группу мы отбрасываем? Random
Тем не менее, вы можете получить верхние x местоположения, где местоположения сортируются по убыванию, хотя вы можете изменить порядок сортировки . 33 местоположения ведра с 3 результатами на ведро 99 ... достаточно близко?
Таким образом, вы можете получить не более 3 результатов для каждого местоположения для 33 местоположений, используя агрегирование терминов и вложенное агрегация топ-хитов
GET lotr/_search?size=0
{
"aggs": {
"location": {
"terms": {
"field": "location",
"size": 33
},
"aggs": {
"name": {
"top_hits": {
"size": 3,
"_source": {
"includes": ["name"]
}
}
}
}
}
}
}