MST

星途 面试题库

面试题:ElasticSearch聚合中如何实现基础的地理空间数据范围聚合

在ElasticSearch中,给定一组包含地理坐标(latitude和longitude)的文档,假设我们有一个索引名为`geo_index`,文档类型为`geo_doc`,请描述如何使用聚合来获取某个矩形地理区域内文档的数量。并给出相应的聚合查询语句示例。
48.0万 热度难度
数据库ElasticSearch

知识考点

AI 面试

面试题答案

一键面试

描述

在Elasticsearch中,要获取某个矩形地理区域内文档的数量,可以使用geo_bounding_box聚合。该聚合允许通过指定矩形区域的左上角和右下角坐标来筛选出位于该区域内的文档,并对这些文档进行计数。

聚合查询语句示例

{
    "aggs" : {
        "within_rectangle" : {
            "geo_bounding_box" : {
                "field" : "location", 
                "top_left" : {
                    "lat" : 40.73, 
                    "lon" : -74.1
                },
                "bottom_right" : {
                    "lat" : 40.01, 
                    "lon" : -71.12
                }
            }
        }
    }
}

请注意:

  1. 上述示例中假设文档中有一个名为location的地理点字段,实际应用中请替换为你真实的地理坐标字段名。
  2. top_leftbottom_right分别为矩形区域的左上角和右下角坐标,需要根据实际区域调整。
  3. 对于索引geo_index和文档类型geo_doc,在实际查询时需要结合具体的Elasticsearch版本,在请求路径中体现,例如在Elasticsearch 7.x及以上版本中,文档类型已被弃用,请求可能类似POST geo_index/_search。在旧版本中可能是POST geo_index/geo_doc/_search