我的 ElasticSearch 索引中有一些带有地理点的行。现在,我搜索所有行,例如半径5公里内。结果是一个包含所有与查询匹配的点的列表。
是否可以在 ElasticSearch 中对结果进行聚类以获取所有“热点”?已经找到了elasticsearch的geo centroid聚合函数,但这不是我正在寻找的东西。
我知道,可以使用 Mapbox 的 Supercluster 或类似的库来做到这一点。但是 ElasticSearch 可以吗?请看这两张图片。第二张图显示了我想要得到的结果。干杯!
我还没有使用过它,但我认为你需要一个地理哈希网格聚合。请参阅:https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-geohashgrid-aggregation.html
您应该能够改变精度,它将返回包含文档计数的 geo_hash 存储桶。
有一个开源插件支持地理点聚类,就像您的图片一样。不幸的是,在撰写本文时,它不支持 Elastcsearch 8.x
https://github.com/opendatasoft/elasticsearch-aggregation-geoclustering
付费的 Elastcsearch 版本确实包含类似的功能,但它将地图划分为固定的网格。