1

我有一组从我已索引到 ES 的形状文件中提取的 geo_shapes。我还有大量带有 geo_points 的文档索引。我正在尝试运行一个查询,该查询返回在 geo_shape 中有一个点的所有文档,但始终返回零结果。

我很确定映射是正确的,因为我可以查询特定的纬度/经度并成功取回它所在的 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 文档返回。

4

1 回答 1

0

为了使它起作用,您的第二个索引中的位置也需要映射为geo_shape(type=Point) 以及 (not geo_point),如下所示:

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

然后,您geo_shape预索引形状的查询将按预期工作

于 2016-11-21T16:27:49.313 回答