Introduktion til Geolocation Search in Elasticsearch

For det første skal du installere Elasticsearch på din server eller bruge en cloud-baseret Elasticsearch tjeneste som Elastic Cloud. Sørg for at installere en kompatibel version af Elasticsearch med GeoPoint plugin.

 

Installer og konfigurer GeoPoint-plugin'et

Elasticsearch understøtter geolokationssøgning gennem GeoPoint plugin. For at installere dette plugin kan du bruge Elasticsearch plugin-administrationsværktøjet.

For eksempel, hvis du bruger Elasticsearch version 7.x, kan du køre følgende kommando for at installere GeoPoint-pluginnet:

bin/elasticsearch-plugin install ingest-geoip

Efter installation af GeoPoint-pluginnet, skal du konfigurere dit indeks til at bruge "geo_point"-datatypen for det felt, der skal indeholde geolokationsoplysningerne. For at gøre dette kan du enten redigere tilknytningen af ​​et eksisterende indeks eller oprette et nyt indeks med den konfigurerede tilknytning.

 

Definer Geolocation-feltet i Mapping

Tilføj geolocation-feltet til dit indeks, og rediger kortlægningen for det felt. Geolocation-feltet bruger typisk datatypen "geo_point". Kortlægningen vil definere attributterne og mulighederne for geolokationsfeltet, såsom præcisionen af ​​koordinaterne, formatet og mere.

Eksempel:

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

 

Rediger data

Tilføj geolokationsoplysninger til dine dokumenter. Typisk er geolokationsoplysninger repræsenteret som et par af longitude og latitude koordinater. Du kan få disse oplysninger fra brugere ved hjælp af Google Maps API eller andre geolokaliseringsdatakilder.

Eksempel:

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

 

Udfør Geolocation Search

Nu hvor du har geolocation-data i dit Elasticsearch indeks, kan du udføre geolocation-søgeforespørgsler for at finde dokumenter i nærheden af ​​et bestemt sted eller inden for et bestemt geografisk område. For at udføre en geolokationssøgning kan du bruge Elasticsearch 's tilsvarende forespørgsler som geo_distance, geo_bounding_box, geo_polygon osv.

Eksempel: Find steder i nærheden af ​​koordinaterne(21.03405, 105.81507) inden for en radius på 5 km.

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

 

Integrere Google Maps

Hvis du ønsker at integrere Google Maps med Elasticsearch for at indhente geolokationsoplysninger fra brugere, kan du bruge Google Maps API til at hente længde- og breddegradskoordinater baseret på en adresse eller en lokation valgt af brugerne. Derefter kan du bruge disse oplysninger til at tilføje geolokationsdata til dit Elasticsearch indeks og udføre geolocation-søgeforespørgsler.

Afslutningsvis giver integration Google Maps med Elasticsearch dig mulighed for at udnytte geolocation søgefunktioner i dine data, hvilket muliggør nøjagtig og effektiv søgning baseret på geolocation information.