Запрос Elasticsearch geo_shape дает неверные результаты

Я столкнулся с проблемой, я знаю, как найти все geo_points в определенном радиусе, но мне нужно найти, в скольких регионах или geo_shape находится конкретная точка. Чтобы решить эту проблему, я сделал следующий индекс:

PUT /users

И это отображение:

PUT /users/_mapping/_doc
{
    "properties": {
        "radius": {
          "type": "geo_shape",
          "tree": "quadtree",
          "precision": "100m"
        },
        "point":{
          "type":"geo_point"
        }
      }

}

Также ниже представлен образец документа:

POST /users/_doc
{
    "radius":{
      "type" : "circle",
      "coordinates" : [28.363157, 77.287550],
      "radius" : "100km"
    },
    "point":{
      "lat" : 28.363157,
      "lon": 77.287550
    }

}

Я делаю следующий запрос:

POST /users/_search
{
    "query":{
        "bool": {
            "must": {
                "match_all": {}
            },
            "filter": {
                "geo_shape": {
                    "radius": {
                        "shape": {
                            "type": "point",
                            "coordinates" : [29.363157, 77.28755]
                        },
                        "relation": "contains"
                    }
                }
            }
        }
    }
}

Теперь расстояние между широтами в запросе и документом составляет почти 110-112 км / с, поэтому указанный выше запрос возвращает точный результат, но когда я запрашиваю [30.363157, 77.28755], он по-прежнему возвращает документ, даже если расстояние превышает 220 км / с.

Что я делаю неправильно?

Я нанес на карту круг и вторую точку (30.363157, 77.28755), и последняя хорошо вписывается в круг. Вы можете увидеть это здесь: gist.github.com/consulthys/5ec4c720faa69462cbee5f3e16dfd418

Val 31.10.2018 12:01

Я думаю, ваша карта неправильная, 30.363157, 77.28755 лежит где-то в Индии! Можете ли вы рассказать мне, как вы делаете эту карту?

sphinx 31.10.2018 12:08

см. drive.google.com/…

sphinx 31.10.2018 12:18

Думаю, я обнаружил свою глупость, координаты в формате [lon, lat], я ожидал их как [lat, lon].

sphinx 31.10.2018 12:32

Карта правильная, поверьте. GeoJSON требует lon, lat ;-) Но действительно, если вы перевернете долготу на долгий <-> шир, то ваша точка окажется вне круга вокруг Нью-Дели.

Val 31.10.2018 12:42

да я тебе верю !!!! ответьте на вопрос, отмечу как принято: D

sphinx 31.10.2018 12:56
0
6
232
0

Другие вопросы по теме