Запрос Elasticsearch geo_shape дает неверные результаты - PullRequest
0 голосов
/ 31 октября 2018

Я столкнулся с проблемой, я знаю, как найти все 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 км.

Что я делаю не так?

...