地理定位搜索简介 Elasticsearch

首先,您需要 Elasticsearch 在服务器上安装或使用基于云的 Elasticsearch 服务,例如 Elastic Cloud。 确保安装 Elasticsearch 与 GeoPoint 插件兼容的版本。

 

安装和配置 GeoPoint 插件

Elasticsearch 通过 GeoPoint 插件支持地理位置搜索。 要安装此插件,您可以使用 Elasticsearch 插件管理工具。

例如,如果您使用的是 Elasticsearch 7.x 版本,则可以运行以下命令来安装 GeoPoint 插件:

bin/elasticsearch-plugin install ingest-geoip

安装 GeoPoint 插件后,您需要配置索引以使用“geo_point”数据类型作为保存地理位置信息的字段。 为此,您可以编辑现有索引的映射,也可以使用配置的映射创建新索引。

 

定义映射中的地理位置字段

将地理位置字段添加到索引并编辑该字段的映射。 地理位置字段通常使用“geo_point”数据类型。 映射将定义地理位置字段的属性和选项,例如坐标精度、格式等。

例子:

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

 

编辑数据

将地理位置信息添加到您的文档中。 通常,地理位置信息表示为一对 longitudelatitude 坐标。 您可以使用 Google Maps API 或其他地理位置数据源从用户处获取此信息。

例子:

PUT /my_locations_index/_doc/1  
{  
  "name": "Ba Dinh Square",  
  "location": {  
    "lat": 21.03405,  
    "lon": 105.81507  
  }  
}  

 

执行地理位置搜索

现在索引中已有地理位置数据 Elasticsearch,您可以执行地理位置搜索查询来查找特定位置附近或特定地理范围内的文档。 要执行地理位置搜索,您可以使用 Elasticsearch 的相应查询,例如 geo_distance、geo_bounding_box、geo_polygon 等。

示例:查找坐标(21.03405, 105.81507) 附近 5 公里半径内的位置。

GET /my_locations_index/_search  
{  
  "query": {  
    "geo_distance": {  
      "distance": "5km",  
      "location": {  
        "lat": 21.03405,  
        "lon": 105.81507  
      }  
    }  
  }  
}  

 

整合 Google Maps

如果您想集成 Google Maps 以 Elasticsearch 获取用户的地理位置信息,您可以使用 来 Google Maps API 根据用户选择的地址或位置检索经度和纬度坐标。 然后,您可以使用此信息将地理位置数据添加到 Elasticsearch 索引并执行地理位置搜索查询。

总之,集成 Google Maps 允许 Elasticsearch 您利用数据中的地理位置搜索功能,从而实现基于地理位置信息的准确高效的搜索。