我有“形状”索引,其中存储了许多巨大的地理形状(一个地理形状的原始形状文件大小为 6MB)。
我正在使用这个映射:
"shape": {
"type": "geo_shape",
"tree": "quadtree",
"tree_levels": "20"
},
"_all": {
"enabled": false
},
"dynamic": "true"
我也有“照片”索引。每张照片的纬度和经度都显示为带有点类型的地理形状。例如
"location": {
"type": "Point",
"coordinates": [
-103.262600,
43.685315
]
}
为其映射:
"location": {
"type": "geo_shape",
"tree": "quadtree",
"tree_levels": 20
}
我正在尝试使用以下查询查找位于所选形状内的所有照片:
GET photos/_search
{
"query": {
"filtered": {
"filter": {
"geo_shape": {
"location": {
"relation": "intersects",
"indexed_shape": {
"id": "huge_region_shape_id",
"type": "country",
"index": "shapes",
"path": "shape"
}
}
}
},
"query": {
"match_all": {}
}
}
}
}
问题:
1)在一个巨大的形状上,这个查询会执行几分钟或永远。
2)如果“形状”包含在源中,仅通过某些参数搜索形状会花费大量时间,但如果我将其排除 - geo_shape 过滤器将抛出异常 - “找到形状但缺少字段”
在映射中:
_source: {
excludes : ['shape']
}
有没有办法解决这个问题?