での位置情報検索の概要 Elasticsearch

Elasticsearch まず、サーバーに インストールするか、Elastic Cloud などのクラウドベースのサービスを使用する必要があります Elasticsearch。 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"  
      }  
    }  
  }  
}  

 

データの編集

地理位置情報をドキュメントに追加します。 longitude 通常、地理位置情報はと の座標 のペアとして表されます latitude。 この情報は、 または他の地理位置情報データ ソースを使用してユーザーから取得できます 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 などの の対応するクエリを使用できます。

例: 半径 5km 以内の座標(21.03405、105.81507) に近い場所を検索します。

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 、データ内の地理位置情報検索機能を活用でき、地理位置情報に基づいた正確かつ効率的な検索が可能になります。