Einführung in die Geolocation-Suche in Elasticsearch

Zunächst müssen Sie es auf Ihrem Server installieren Elasticsearch oder einen cloudbasierten Elasticsearch Dienst wie Elastic Cloud nutzen. Stellen Sie sicher, dass Sie eine kompatible Version Elasticsearch mit dem GeoPoint-Plugin installieren.

 

Installieren und konfigurieren Sie das GeoPoint-Plugin

Elasticsearch unterstützt die Geolokalisierungssuche über das GeoPoint-Plugin. Um dieses Plugin zu installieren, können Sie das Elasticsearch Plugin-Verwaltungstool verwenden.

Wenn Sie beispielsweise Elasticsearch Version 7.x verwenden, können Sie den folgenden Befehl ausführen, um das GeoPoint-Plugin zu installieren:

bin/elasticsearch-plugin install ingest-geoip

Nach der Installation des GeoPoint-Plugins müssen Sie Ihren Index so konfigurieren, dass er den Datentyp „geo_point“ für das Feld verwendet, das die Geolocation-Informationen enthält. Dazu können Sie entweder das Mapping eines bestehenden Index bearbeiten oder einen neuen Index mit dem konfigurierten Mapping erstellen.

 

Definieren Sie das Geolocation-Feld in Mapping

Fügen Sie das Geolocation-Feld zu Ihrem Index hinzu und bearbeiten Sie die Zuordnung für dieses Feld. Das Geolocation-Feld verwendet normalerweise den Datentyp „geo_point“. Die Zuordnung definiert die Attribute und Optionen für das Geolokalisierungsfeld, wie z. B. die Genauigkeit der Koordinaten, das Format und mehr.

Beispiel:

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

 

Daten bearbeiten

Fügen Sie Ihren Dokumenten Geolokalisierungsinformationen hinzu. Normalerweise werden Geolokalisierungsinformationen als Koordinatenpaar longitude dargestellt latitude. Google Maps API Sie können diese Informationen von Benutzern erhalten, die die oder andere Geolocation-Datenquellen verwenden .

Beispiel:

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

 

Führen Sie eine Geolocation-Suche durch

Da Ihr Elasticsearch Index nun Geolocation-Daten enthält, können Sie Geolocation-Suchanfragen durchführen, um Dokumente in der Nähe eines bestimmten Standorts oder innerhalb eines bestimmten geografischen Bereichs zu finden. Um eine Geolokalisierungssuche durchzuführen, können Sie Elasticsearch die entsprechenden Abfragen von verwenden, z. B. geo_distance, geo_bounding_box, geo_polygon usw.

Beispiel: Finden Sie Orte in der Nähe der Koordinaten(21.03405, 105.81507) in einem Umkreis von 5 km.

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

 

Integrieren Google Maps

Wenn Sie eine Integration durchführen möchten, Google Maps um Elasticsearch Geolokalisierungsinformationen von Benutzern zu erhalten, können Sie Google Maps API Längen- und Breitengradkoordinaten basierend auf einer von Benutzern ausgewählten Adresse oder einem Standort abrufen. Anschließend können Sie diese Informationen verwenden, um Geolocation-Daten zu Ihrem Index hinzuzufügen Elasticsearch und Geolocation-Suchanfragen durchzuführen.

Zusammenfassend lässt sich sagen, dass die Integration Google Maps mit Elasticsearch Ihnen die Nutzung von Geolokalisierungssuchfunktionen in Ihren Daten ermöglicht und so eine genaue und effiziente Suche auf der Grundlage von Geolokalisierungsinformationen ermöglicht.