Bootstrap

【Elasticsearch】geohex grid聚合

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

;