5.2.12. GeoTile Grid Aggregation

未匹配的标注
  • GeoTile网格聚合
    一个多bucket聚合,作用于geo_point字段并将点分组到代表网格中单元格的bucket中。生成的网格可以是稀疏的,并且只包含具有匹配数据的单元格。每个单元格对应于许多在线地图站点使用的地图平铺。每个单元格都使用“{zoom}/{x}/{y}”格式进行标记,其中zoom等于用户指定的精度。

-高精度键对x和y的范围更大,并且表示仅覆盖小区域的平铺。
-低精度键对x和y的范围更小,并且表示每个单元格都覆盖大区域的平铺。

请参阅缩放级别文档依据Precision(变焦)与地面上的大小相关联。这种聚合的精度可以在0到29之间,包括在0和29之间。

警告
长度为29的最高精度地理瓦片会生成覆盖不到 10cm x 10cm 土地区域的单元格,因此高精度请求在 RAM 和结果大小方面可能非常昂贵。请参考以下示例,在请求高级别详细信息之前,先将聚合过程筛选到较小的地理区域。

指定的字段必须是 geo_point 类型(只能在映射中明确设置),它还可以容纳一个 geo_point 字段数组,在此情况下聚合过程将考虑所有点。

简单的低精度请求

PUT /museums
{
    "mappings": {
          "properties": {
              "location": {
                  "type": "geo_point"
              }
          }
    }
}

POST /museums/_bulk?refresh
{"index":{"_id":1}}
{"location": "52.374081,4.912350", "name": "NEMO Science Museum"}
{"index":{"_id":2}}
{"location": "52.369219,4.901618", "name": "Museum Het Rembrandthuis"}
{"index":{"_id":3}}
{"location": "52.371667,4.914722", "name": "Nederlands Scheepvaartmuseum"}
{"index":{"_id":4}}
{"location": "51.222900,4.405200", "name": "Letterenhuis"}
{"index":{"_id":5}}
{"location": "48.861111,2.336389", "name": "Musée du Louvre"}
{"index":{"_id":6}}
{"location": "48.860000,2.327000", "name": "Musée d'Orsay"}

POST /museums/_search?size=0
{
    "aggregations" : {
        "large-grid" : {
            "geotile_grid" : {
                "field" : "location",
                "precision" : 8
            }
        }
    }
}

响应:

{
    ...
    "aggregations": {
        "large-grid": {
            "buckets": [
                {
                  "key" : "8/131/84",
                  "doc_count" : 3
                },
                {
                  "key" : "8/129/88",
                  "doc_count" : 2
                },
                {
                  "key" : "8/131/85",
                  "doc_count" : 1
                }
            ]
        }
    }
}

高精度的请求

当请求详细的桶 (通常用于显示"放大"的地图) 在狭窄的主题区域中应该应用过滤器,如 geo_bounding_box ,否则可能会创建和返回数百万个桶

POST /museums/_search?size=0
{
    "aggregations" : {
        "zoomed-in" : {
            "filter" : {
                "geo_bounding_box" : {
                    "location" : {
                        "top_left" : "52.4, 4.9",
                        "bottom_right" : "52.3, 5.0"
                    }
                }
            },
            "aggregations":{
                "zoom1":{
                    "geotile_grid" : {
                        "field": "location",
                        "precision": 22
                    }
                }
            }
        }
    }
}
{
    ...
    "aggregations" : {
        "zoomed-in" : {
            "doc_count" : 3,
            "zoom1" : {
                "buckets" : [
                    {
                      "key" : "22/2154412/1378379",
                      "doc_count" : 1
                    },
                    {
                      "key" : "22/2154385/1378332",
                      "doc_count" : 1
                    },
                    {
                      "key" : "22/2154259/1378425",
                      "doc_count" : 1
                    }
                ]
            }
        }
    }
}

选项

field 必填。使用 GeoPoints 进行索引的字段名称。
precision 可选。用于定义结果中 cells/buckets 的键的整数缩放级别。默认为 7。超出[0,29]范围的值将被拒绝。
size 可选。返回的 Geohash 存储桶的最大数量(默认为 10,000)。在调整结果时,会根据存储桶包含的文档量来确定它们的优先级。
shard_size 可选。为了更准确地计算返回结果中顶部单元格的计数,聚合默认返回每个分片的 max(10,(size x number-of-shards)) 个桶。如果不需要这种方法,可以使用此参数覆盖每个分片中考虑的数量。

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/elasticsearch73...

译文地址:https://learnku.com/docs/elasticsearch73...

上一篇 下一篇
CrazyZard
贡献者:7
讨论数量: 0
发起讨论 只看当前版本


暂无话题~