У меня есть простой индексasticsearch 7.4, содержащий несколько заведений с привязанными к ним координатами геолокации. Как пользователь в моем приложении геолокации, я буду запрашивать все 50 близлежащих заведений, основываясь на моем текущем местоположении.
Проблема с этим подходом состоит в том, что когда пользователь уменьшает масштаб карты (очень большой радиус), он я буду получать только самые близкие заведения в крошечной части карты.
Я хотел бы получить другие результаты, разбросанные по всей карте, с помощью какой-либо расстановки приоритетов, например, более известных компаний и партнеров, которые требуют более высоких показателей. приоритет. Карты Google делают то же самое, но я не уверен, какой тип приоритетов здесь сделан.
Каков наилучший способ добиться этого с помощью ES?
Мой текущий запрос несколько похож на это:
GET /places/_search
{
"size": 50,
"query": {
"bool": {
"must": {
"match_all": {}
},
"filter": {
"geo_distance": {
"distance": "10km",
"coordinates": {
"lat": -2.000000,
"lon": -4.000000
}
}
}
}
},
"sort": [
{
"_geo_distance": {
"coordinates": {
"lat": -2.000000,
"lon": -4.000000
},
"order": "asc",
"unit": "m",
"distance_type": "arc"
}
}
]
}