使用与索引的地理形状相交/内的地理点查询所有文档的ElasticSearch

时间:2016-11-21 15:39:43

标签: elasticsearch elasticsearch-geo-shape

我有一个从我已编入ES的形状文件中拉出的geo_shapes集合。我还有一个包含geo_points的大型文档索引。我试图运行一个查询,返回所有在geo_shape中有一个点的文档,但是返回零结果。

我非常确定映射是正确的,因为我可以查询特定的lat / long并成功找回它所在的geo_shape。我也可以使用geo_points对文档进行边界框搜索并成功找回匹配的文档列表。

以下是我的geo_shapes的映射:

{
"geometry":{
"properties": { 
"type": "geo_shape", 
"tree":"quadtree"
}
}
}

这是具有geo_points的文档的映射:

{
"docs":{
"location":{
"properties":{
"coordinates":{
"type":"geo_point",
"geohash":true
}
}
}
}
}

我试图运行的查询是:

{"query":
"geo_shape": {
"location": {
"indexed_shape": {
"id": "shape_id",
"type": "locations",
"index": "index_name",
"path": "geometry"
}
}
}

我针对包含geo_points文档的特定索引/类型运行查询。如果我针对整个索引运行它,那么只返回geo_shape文档。

1 个答案:

答案 0 :(得分:0)

为了使其正常工作,第二个索引中的位置也需要映射为geo_shape(type = Point)(不是geo_point),如下所示:

{
  "locations": {
    "location": {
      "properties": {
        "coordinates": {
          "type": "geo_shape",
          "tree": "quadtree",
          "precision": "1m"
        }
      }
    }
  }
}

然后,处理pre-indexed shapesgeo_shape查询将按预期工作