Introduction à la recherche géolocalisée dans Elasticsearch

Tout d'abord, vous devez installer Elasticsearch sur votre serveur ou utiliser un Elasticsearch service basé sur le cloud comme Elastic Cloud. Assurez-vous d'installer une version compatible Elasticsearch avec le plugin GeoPoint.

 

Installer et configurer le plugin GeoPoint

Elasticsearch prend en charge la recherche de géolocalisation via le plugin GeoPoint. Pour installer ce plugin, vous pouvez utiliser l' Elasticsearch outil de gestion des plugins.

Par exemple, si vous utilisez Elasticsearch la version 7.x, vous pouvez exécuter la commande suivante pour installer le plugin GeoPoint :

bin/elasticsearch-plugin install ingest-geoip

Après avoir installé le plugin GeoPoint, vous devez configurer votre index pour utiliser le type de données "geo_point" pour le champ qui contiendra les informations de géolocalisation. Pour ce faire, vous pouvez soit modifier le mappage d'un index existant, soit créer un nouvel index avec le mappage configuré.

 

Définir le champ de géolocalisation dans Mapping

Ajoutez le champ de géolocalisation à votre index et modifiez le mappage de ce champ. Le champ de géolocalisation utilise généralement le type de données "geo_point". Le mappage définira les attributs et les options du champ de géolocalisation, tels que la précision des coordonnées, le format, etc.

Exemple:

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

 

Modifier les données

Ajoutez des informations de géolocalisation à vos documents. En règle générale, les informations de géolocalisation sont représentées sous la forme d'une paire de coordonnées longitude et latitude. Vous pouvez obtenir ces informations auprès des utilisateurs à l'aide de Google Maps API ou d'autres sources de données de géolocalisation.

Exemple:

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

 

Effectuer une recherche de géolocalisation

Maintenant que vous avez des données de géolocalisation dans votre Elasticsearch index, vous pouvez effectuer des requêtes de recherche de géolocalisation pour trouver des documents à proximité d'un emplacement spécifique ou dans une certaine plage géographique. Pour effectuer une recherche de géolocalisation, vous pouvez utiliser Elasticsearch les requêtes correspondantes de comme geo_distance, geo_bounding_box, geo_polygon, etc.

Exemple : recherchez des emplacements proches des coordonnées(21.03405, 105.81507) dans un rayon de 5 km.

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

 

Intégrer Google Maps

Si vous souhaitez intégrer Google Maps avec Elasticsearch pour obtenir des informations de géolocalisation des utilisateurs, vous pouvez utiliser le Google Maps API pour récupérer les coordonnées de longitude et de latitude en fonction d'une adresse ou d'un emplacement sélectionné par les utilisateurs. Ensuite, vous pouvez utiliser ces informations pour ajouter des données de géolocalisation à votre Elasticsearch index et effectuer des requêtes de recherche de géolocalisation.

En conclusion, l'intégration Google Maps avec Elasticsearch vous permet d'exploiter les fonctionnalités de recherche de géolocalisation dans vos données, permettant une recherche précise et efficace basée sur les informations de géolocalisation.