эластичный поисковый запрос для расстояния географических точек - PullRequest
0 голосов
/ 26 июня 2018

Я хочу получить ресурсы, которые находятся в радиусе доставки по точке клиента. мое отображение как ниже:

 "restaurantPoint"       => [
 "type" => "geo_point"
 ],
 "deliveryRadius"        => [
 "type" => "float"
 ]

и пример данных, как показано ниже:

`"restaurantPoint": "35.73701996471125,51.409086138010025",
"deliveryRadius": 1`

так, у каждого ресторана есть точка и радиус доставки в км, с другой стороны мы знаем точку пользователя. в запросе я хочу получить рестораны, которые могут доставить еду к месту нахождения пользователя. я должен проверить, если расстояние между точкой ресторана и точкой пользователя меньше, чем радиус доставки ресторана.

например, если расстояние между пользователем и рестораном составляет 1 км, а радиус доставки ресторана - 2 км, мы можем выбрать это.

эластичный поиск документ не найден, чтобы найти решение.

1 Ответ

0 голосов
/ 27 июня 2018

наконец-то я использовал скрипт:

GET development-restaurants/restaurants/_search
{
    "query": {
        "bool" : {
        "must" : {
            "script" : {
                "script" : {
                    "source": "doc['restaurantPoint'].arcDistance(35.73702, 51.40909) <= doc['deliveryRadius'].value",
                    "lang": "painless"
                 }
            }
        }
     }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...