【Elasticsearch】geohex grid聚合

ops/2025/2/7 3:49:37/

在 Elasticsearch 中,地理边界过滤是一种用于筛选地理数据的技术,它可以根据指定的地理边界形状(如矩形、多边形等)来过滤符合条件的文档。这种方法在地理空间数据分析中非常有用,尤其是在需要将数据限制在特定地理区域内时。

 

 

 

什么是地理边界过滤?

地理边界过滤允许用户定义一个地理边界(如矩形、多边形或复杂的地理形状),并仅返回那些与该边界相交或完全包含在其中的地理数据。这种过滤方式可以用于`geo_point`和`geo_shape`类型的字段。

 

 

常见的地理边界过滤类型

 

1. `geo_bounding_box`:根据矩形边界框来过滤结果。需要指定左上角和右下角的坐标。

 

```json

   {

     "query": {

       "geo_bounding_box": {

         "location": {

           "top_left": {

             "lat": 52.4,

             "lon": 4.9

           },

           "bottom_right": {

             "lat": 52.3,

             "lon": 5.0

           }

         }

       }

     }

   }

   ```

 

 

 

2. `geo_polygon`:根据多边形区域来过滤结果。需要指定多边形的顶点坐标。

 

```json

   {

     "query": {

       "geo_polygon": {

         "location": {

           "points": [

             {"lat": 52.4, "lon": 4.9},

             {"lat": 52.3, "lon": 5.0},

             {"lat": 52.4, "lon": 5.0}

           ]

         }

       }

     }

   }

   ```

 

 

 

3. `geo_shape`:支持更复杂的地理形状查询,如国家边界等。

 

```json

   {

     "query": {

       "geo_shape": {

         "location": {

           "shape": {

             "type": "polygon",

             "coordinates": [

               [

                 [4.9, 52.4],

                 [5.0, 52.4],

                 [5.0, 52.3],

                 [4.9, 52.3],

                 [4.9, 52.4]

               ]

             ]

           }

         }

       }

     }

   }

   ```

 

 

 

在 Geohex Grid 聚合中的应用

在使用 Geohex Grid 聚合时,可以通过`bounds`参数来限制聚合的地理范围。`bounds`参数接受与`geo_bounding_box`查询相同的边界框格式。

 

```json

POST /museums/_search?size=0

{

  "aggregations": {

    "tiles-in-bounds": {

      "geohex_grid": {

        "field": "location",

        "precision": 12,

        "bounds": {

          "top_left": "POINT (4.9 52.4)",

          "bottom_right": "POINT (5.0 52.3)"

        }

      }

    }

  }

}

```

 

 

 

优势

 

• 提高查询效率:通过限制地理范围,可以减少需要处理的数据量,从而提高查询性能。

 

• 精确控制数据范围:确保聚合结果仅包含特定地理区域内的数据。

 

 

总结

地理边界过滤是 Elasticsearch 中一种强大的地理数据筛选技术,它可以根据用户定义的地理边界来筛选符合条件的文档。这种技术在地理空间数据分析中非常有用,尤其是在需要将数据限制在特定地理区域内时。


http://www.ppmy.cn/ops/156329.html

相关文章

C# Monitor类 使用详解

总目录 前言 在 C# 中,Monitor 类是一个用于实现线程同步的重要工具,它提供了一种机制来确保同一时间只有一个线程可以访问特定的代码块或资源,从而避免多线程环境下的数据竞争和不一致问题。下面将对 Monitor 类进行详细介绍。 一、Monitor…

day38|leetcode 322零钱兑换,279.完全平方数,139.单词拆分

322. 零钱兑换 给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。 你可以认为每种硬币的数量是…

我的鸿蒙学习之旅:探索万物互联的新宇宙

在科技飞速发展的今天,操作系统领域的创新层出不穷。华为鸿蒙系统的出现,犹如一颗璀璨的新星,照亮了万物互联的未来之路。怀着对新技术的好奇与渴望,我踏上了学习鸿蒙的征程,这段经历充满了挑战与惊喜,也让…

SQLAlchemy通用分页函数实现:支持搜索、排序和动态页码导航

SQLAlchemy通用分页函数实现:支持搜索、排序和动态页码导航 在Web应用开发中,分页功能是一个非常常见的需求。本文将介绍一个基于SQLAlchemy的通用分页函数实现,该实现不仅支持基本的分页功能,还包含了搜索、排序以及动态页码导航…

SpringSecurity密码编码器:使用BCrypt算法加密、自定义密码编码器

1、Spring Security 密码编码器 Spring Security 作为一个功能完备的安全性框架,一方面提供用于完成加密操作的 PasswordEncoder 组件,另一方面提供一个可以在应用程序中独立使用的密码模块。 1.1 PasswordEncoder 抽象接口 在 Spring Security 中,PasswordEncoder 接口代…

为AI聊天工具添加一个知识系统 之78 详细设计之19 正则表达式 之6

本文要点 要点 本项目设计的正则表达式 是一个 动态正则匹配框架。它是一个谓词系统:谓词 是运动,主语是“维度”,表语是 语言处理。主语的一个 双动结构。 Reg三大功能 语法验证、语义检查和 语用检验,三者 :语义约…

高阶开发基础——快速入门C++并发编程6——大作业:实现一个超级迷你的线程池

目录 实现一个无返回的线程池 完全代码实现 Reference 实现一个无返回的线程池 实现一个简单的线程池非常简单,我们首先聊一聊线程池的定义: 线程池(Thread Pool) 是一种并发编程的设计模式,用于管理和复用多个线程…

2024华为OD机试E卷-数大雁-(Python)

2024华为OD机试最新E卷题库-(C卷+D卷+E卷)-(JAVA、Python、C++) 目录 题目描述 输入描述 输出描述 用例1 用例2 用例3 用例4 考点 题目解析 代码 题目描述 一群大雁往南飞,给定一个字符串记录地面上的游客听到的大雁叫声,请给出叫声最少由几只大雁发出。 具体的…