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