我正面临一个问题,我知道如何找到特定半径内的所有geo_point,但是我需要找到特定点所在的区域或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-112kms,因此上面的查询返回的是准确的结果,但是当我查询[30.363157, 77.28755]
时,即使距离超过220kms,它仍会返回文档。
我在做什么错了?