我有一个从我已编入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文档。
答案 0 :(得分:0)
为了使其正常工作,第二个索引中的位置也需要映射为geo_shape
(type = Point)(不是geo_point
),如下所示:
{
"locations": {
"location": {
"properties": {
"coordinates": {
"type": "geo_shape",
"tree": "quadtree",
"precision": "1m"
}
}
}
}
}
然后,处理pre-indexed shapes的geo_shape
查询将按预期工作