地理空间搜索是 Elasticsearch 中的一项强大功能,它允许您对地理位置数据进行索引、搜索和分析。以下是一些关于地理空间搜索的指南。

什么是地理空间搜索?

地理空间搜索是指对地理数据(如经纬度、地址、地图坐标等)进行索引和搜索的能力。Elasticsearch 提供了强大的地理空间搜索功能,可以用于各种应用,如地图、物流、气象分析等。

地理空间数据类型

Elasticsearch 支持多种地理空间数据类型,包括:

  • point:点数据类型,用于表示单个地理位置。
  • geopoint:地理点数据类型,与 point 类似,但包含额外的地理信息。
  • geoshape:地理形状数据类型,用于表示更复杂的地理形状,如多边形。

索引地理空间数据

要将地理空间数据索引到 Elasticsearch,您需要使用 geo_point 字段类型。以下是一个示例:

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

搜索地理空间数据

Elasticsearch 提供了丰富的地理空间搜索功能,包括:

  • 简单地理空间查询,如 match_point
  • 范围查询,如 geo_bounding_box
  • 地理形状查询,如 geo_shape

以下是一个示例搜索请求:

GET /geo_data/_search
{
  "query": {
    "geo_bounding_box": {
      "location": {
        "top_left": {
          "lat": 40.7128,
          "lon": -74.0060
        },
        "bottom_right": {
          "lat": 40.7192,
          "lon": -73.9960
        }
      }
    }
  }
}

图片示例

地理空间搜索在地图上的应用非常广泛。以下是一个地图示例:

地图示例

了解更多关于 Elasticsearch 地理空间搜索