Elasticsearch geo_shape查询给出错误结果

时间:2018-10-31 10:33:09

标签: elasticsearch geospatial elasticsearch-geo-shape

我正面临一个问题,我知道如何找到特定半径内的所有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,它仍会返回文档。

我在做什么错了?

0 个答案:

没有答案