инкрементный поиск по geo_point - PullRequest
0 голосов
/ 03 августа 2020

Wi sh для поиска ближайшего человека из введенного местоположения geo_point.

Шаги: 1: Добавьте документы с именем человека и его данными о широте и долготе

Ожидаемый результат Тело запроса должно содержать geo_point (широта / долгота пользователя) и должны искать документы Ближайший к диапазону (радиус), например, 1: Искать человека, добавленного в # 1, начиная с 20 миль, если он найден, вернуть соответствующие документы 2: увеличить смещение на 5 миль ie. ищите человека в радиусе 25 миль 3: повторяйте # 2, пока не дойдете до макс. 50 миль, чтобы найти человека

Добавьте некоторые образцы данных, как показано ниже

PUT http://localhost:9200/person_locations/person/1  
{
    "name": "personA",
    "location": {
        "lat": 28.610001,
        "lon": 77.230003
    }
} 

PUT http://localhost:9200/person_locations/person/2
{
    
        "name": "personB",  
        "location" : {
            "lat" : 28.610002,
            "lon" : 77.230005
        }
    
}

Я возможность поиска местоположения, указав диапазон расстояний, например, 80 миль от данного местоположения. Но если в пределах диапазона не найдено людей, поиск Elasti c должен найти записи, увеличивая диапазон, например, на 10 миль (смещение), поэтому поиск Elasti c должен находиться в пределах 90 диапазон миль, и, если он все еще не найден, должен вернуть пустой набор результатов

GET http://localhost:9200/location_range_search1/_search
{
    "query": {
        "bool": {
            "must": {
                "match_all": {}
            },
            "filter": {
                "geo_distance": {
                    "distance": "80mi",
                    "location": {
                         "lat" : 28.11,
             "lon" : 77.11
                    }
                }
            }
        }
    }
}
...