You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现Elasticsearch特定大小网格的聚合?

解决方案:使用geo_tile_grid聚合替代geohash_grid

如果你需要精确的等距网格(比如严格的1km×1km单元格),Elasticsearch的geo_tile_grid聚合是更合适的选择——它基于Web Mercator瓦片系统,能生成规则的正方形网格,而geohash_grid的单元格形状会随地理位置偏移(靠近两极会变窄),因此只能提供近似效果。

调整后的查询语句

将原聚合中的geohash_grid替换为geo_tile_grid,并通过precision参数指定对应1km单元格的瓦片精度:

{
  "query": {
    "bool": {
      "filter": [
        {
          "range": {
            "timestamp": {
              "gte": 1662012000000,
              "lte": 1662098399999
            }
          }
        },
        {
          "geo_shape": {
            "location": {
              "shape": {
                "type": "polygon",
                "coordinates": [
                  [
                    [-84.5214136675492, 9.911814727700381],
                    [-85.02380959494664, 10.897883119232858],
                    [-85.02380959494664, 10.90692961823774],
                    ....
                  ]
                ]
              },
              "relation": "WITHIN"
            }
          }
        }
      ]
    }
  },
  "size": 0,
  "aggs": {
    "1km-grids": {
      "geo_tile_grid": {
        "field": "location",
        "precision": 14 // 精度14对应赤道附近约1km见方的单元格(层级越高单元格越小:15≈500m,13≈2km)
      },
      "aggs": {
        "avg_tiempo_mdev": {
          "avg": {
            "field": "finales.tiempo_mdev"
          }
        }
      }
    }
  }
}

关键说明

  1. 精度与单元格大小对应:geo_tile_grid的precision是瓦片层级,层级14的单元格在赤道附近为1km左右,越往两极纬度方向的边长会收缩,但经度方向保持一致(这是Web Mercator投影的特性)。
  2. 简化查询结构:原查询的should嵌套bool结构冗余,直接将range和geo_shape放入filter下即可,逻辑更清晰且不影响结果。
  3. 自动过滤网格:geo_tile_grid会自动只聚合多边形范围内的网格单元格,无需额外处理。

若需完全精确的等距网格(非Web Mercator)

如果要求所有单元格无论地理位置都是严格1km×1km的正方形,Elasticsearch原生聚合无法直接实现,可通过以下方式处理:

  • 预处理数据:索引时计算每个location所属的自定义1km网格ID(将经纬度除以1km对应的度数差,取整后生成唯一标识),再用terms聚合基于该ID分组。
  • 后处理结果:对geo_tile_grid的聚合结果进行二次计算,调整边界以匹配精确1km网格。

内容的提问来源于stack exchange,提问作者daniegarcia254

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 22:15:37