Introduktion till Geolocation Search in Elasticsearch

För det första måste du installera Elasticsearch på din server eller använda en molnbaserad Elasticsearch tjänst som Elastic Cloud. Se till att du installerar en kompatibel version av Elasticsearch med GeoPoint-plugin.

 

Installera och konfigurera GeoPoint Plugin

Elasticsearch stöder sökning av geolokalisering via GeoPoint-plugin. För att installera denna plugin kan du använda Elasticsearch plugin-hanteringsverktyget.

Om du till exempel använder Elasticsearch version 7.x kan du köra följande kommando för att installera GeoPoint-plugin:

bin/elasticsearch-plugin install ingest-geoip

Efter att ha installerat GeoPoint-pluginen måste du konfigurera ditt index för att använda "geo_point"-datatypen för fältet som kommer att innehålla geolokaliseringsinformationen. För att göra detta kan du antingen redigera mappningen av ett befintligt index eller skapa ett nytt index med den konfigurerade mappningen.

 

Definiera geolokaliseringsfältet i kartläggning

Lägg till geolokaliseringsfältet i ditt index och redigera mappningen för det fältet. Geolokaliseringsfältet använder vanligtvis datatypen "geo_point". Kartläggningen kommer att definiera attributen och alternativen för geolokaliseringsfältet, såsom koordinaternas precision, format och mer.

Exempel:

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

 

Redigera data

Lägg till geolokaliseringsinformation till dina dokument. Vanligtvis representeras geolokaliseringsinformation som ett par longitude och latitude koordinater. Du kan få denna information från användare med hjälp av Google Maps API eller andra geolokaliseringsdatakällor.

Exempel:

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

 

Utför Geolocation Search

Nu när du har geolokaliseringsdata i ditt Elasticsearch index kan du utföra geolokaliseringssökningar för att hitta dokument nära en specifik plats eller inom ett visst geografiskt område. För att utföra en geolokaliseringssökning kan du använda Elasticsearch motsvarande frågor som geo_distance, geo_bounding_box, geo_polygon, etc.

Exempel: Hitta platser nära koordinaterna(21.03405, 105.81507) inom en radie på 5 km.

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

 

Integrera Google Maps

Om du vill integrera Google Maps med Elasticsearch för att få geolokaliseringsinformation från användare kan du använda Google Maps API för att hämta longitud- och latitudkoordinater baserat på en adress eller en plats som valts av användarna. Sedan kan du använda denna information för att lägga till geolokaliseringsdata till ditt Elasticsearch index och utföra geolokaliseringssökningar.

Sammanfattningsvis, genom att integrera Google Maps med Elasticsearch kan du dra nytta av sökfunktioner för geolokalisering i din data, vilket möjliggör korrekt och effektiv sökning baserat på geolokaliseringsinformation.