Вам нужно только вернуть отзывы, которые находятся (скажем, в 100 метрах) от заданного местоположения, а затем вам нужно агрегировать по marchant
terms
и добавить top_hits
субагрегацию. Это выглядит так:
{
"size": 0,
"query": {
"geo_distance": {
"distance": "100m",
"location": {
"lat": 16.07055,
"lon": 108.2207
}
}
},
"aggs": {
"by_merchant": {
"terms": {
"field": "merchant"
},
"aggs": {
"top_5": {
"top_hits": {
"_source": [
"feedback"
],
"size": 5
}
}
}
}
}
}
Просто замените местоположение тем, которое вы хотите найти, и, вероятно, расстоянием, если вам нужно большее или меньшее расстояние.