我有'形状'索引,存储了许多巨大的地理形状(一个地理形状的原始shapefile大小为6MB).
我正在使用这个映射:
"shape": {
"type": "geo_shape",
"tree": "quadtree",
"tree_levels": "20"
},
"_all": {
"enabled": false
},
"dynamic": "true"
Run Code Online (Sandbox Code Playgroud)
我也有'照片'索引.每张照片的纬度和经度都显示为带有Point类型的地理位置.例如
"location": {
"type": "Point",
"coordinates": [
-103.262600,
43.685315
]
}
Run Code Online (Sandbox Code Playgroud)
映射:
"location": {
"type": "geo_shape",
"tree": "quadtree",
"tree_levels": 20
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用以下查询查找位于所选形状内的所有照片:
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": {}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题:
1)在巨大的形状上,这个查询会执行几分钟或永久.
2)只是通过某些参数搜索形状需要花费大量时间,如果"形状"包含在源中,但如果我将其排除 …
我尝试确定一个多边形(在文档中索引)是否与另一个形状(如圆形)有共同点。
Elasticsearch文档提供了 4 种类型的关系:
我试图从 GeoJSON 方面寻找更多信息,但没有成功。
我认为第一种类型可以回答我的问题,但我找不到两种类型之间的区别。文档很短。
谢谢。
我在ES中有两个geo_shapes。我需要弄清楚的是了解一种形状(绿色)是否包含另一种形状(红色)或相交的最佳方法。请在下面看到三种不同情况的可视化表示:
案例一:易于检测-使用绿色形状坐标以“ relation” =“ inner”进行Geoshape查询
案例二:也不是问题-使用绿色形状坐标使用“ relation” =“ INTERSECTS”进行Geoshape查询
情况三:是一个真正的问题-使用绿色形状坐标,我尝试使用“ relation” =“ INTERSECTS”进行Geoshape查询,结果返回红色形状……这是错误的-该形状彼此不相交(我认为是这样),即使其中一方互相接触……。
有什么办法可以避免假阳性结果吗?还有其他建议如何解决此任务?
PS的坐标是精确的(例如:13.335594692338)。没有其他映射,例如tree_levels或precision ...