ES 地理网格聚合,基于位置模糊搜索(热力图)

简介

热力图需要按照一定范围聚合数据。 聚合要求字段必须为 geo-point 类型

ES 中 geo-point类型,包含 lat、lon 和 geohash 信息。

"coordinate": {
   
            "lat": 39.90894,
            "lon": 116.82192,
            "geohash": "wx55435nkj9h",
            "fragment": true
}

其中 geohash 字段 是经纬度经过二进制变化、合并和 Base32 编码得到的编码, 编码越长,位置也越精确。

geohash 就像一个个切分地图的网格,精度越高,网格越小,具体对应如下表所示:

geohash 长度 km 误差
1 5,009.4km x 4,992.6km
2 1,252.3km x 624.1km
3 156.5km x 156km
4 39.1km x 19.5km
5 4.9km x 4.9km
6 1.2km x 609.4m
7 152.9m x 152.4m
8 38.2m x 19m
9 4.8m x 4.8m
10 1.2m x 59.5cm
11 14.9cm x 14.9cm
12 3.7cm x 1.9cm

正常情况,精度范围我们可以取 5 ,筛选出标识为 4.9km x 4.9km 的网格

网格聚合

以帖子聚合为栗子:

你可能感兴趣的:(ES 地理网格聚合,基于位置模糊搜索(热力图))