Uvod u pretraživanje geolokacije u Elasticsearch

Prvo, trebate instalirati Elasticsearch na svoj poslužitelj ili koristiti Elasticsearch uslugu temeljenu na oblaku kao što je Elastic Cloud. Provjerite jeste li instalirali kompatibilnu verziju Elasticsearch s GeoPoint dodatkom.

 

Instalirajte i konfigurirajte GeoPoint dodatak

Elasticsearch podržava geolokacijsko pretraživanje putem dodatka GeoPoint. Da biste instalirali ovaj dodatak, možete koristiti Elasticsearch alat za upravljanje dodacima.

Na primjer, ako koristite Elasticsearch verziju 7.x, možete pokrenuti sljedeću naredbu za instaliranje GeoPoint dodatka:

bin/elasticsearch-plugin install ingest-geoip

Nakon instaliranja dodatka GeoPoint, trebate konfigurirati svoj indeks da koristi vrstu podataka "geo_point" za polje koje će sadržavati informacije o geolokaciji. Da biste to učinili, možete urediti mapiranje postojećeg indeksa ili stvoriti novi indeks s konfiguriranim mapiranjem.

 

Definirajte polje geolokacije u mapiranju

Dodajte polje geolokacije u svoj indeks i uredite mapiranje za to polje. Geolokacijsko polje obično koristi vrstu podataka "geo_point". Mapiranje će definirati atribute i opcije za geolokacijsko polje, kao što su preciznost koordinata, format i drugo.

Primjer:

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

 

Uredi podatke

Dodajte informacije o geolokaciji svojim dokumentima. Obično su informacije o geolokaciji predstavljene kao par longitude i latitude koordinate. Ove informacije možete dobiti od korisnika pomoću Google Maps API ili drugih izvora geolokacijskih podataka.

Primjer:

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

 

Izvršite Geolocation Search

Sada kada imate geolokacijske podatke u vašem Elasticsearch indeksu, možete izvršiti geolokacijske upite pretraživanja kako biste pronašli dokumente u blizini određene lokacije ili unutar određenog geografskog raspona. Za izvođenje pretraživanja geolokacije, možete koristiti Elasticsearch odgovarajuće upite kao što su geo_distance, geo_bounding_box, geo_polygon, itd.

Primjer: Pronađite lokacije u blizini koordinata(21.03405, 105.81507) unutar radijusa od 5 km.

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

 

Integrirati Google Maps

Ako se želite integrirati Google Maps s Elasticsearch kako biste dobili informacije o geolokaciji od korisnika, možete koristiti Google Maps API za dohvaćanje koordinata zemljopisne dužine i širine na temelju adrese ili lokacije koju su odabrali korisnici. Zatim možete koristiti te podatke za dodavanje geolokacijskih podataka u vaš Elasticsearch indeks i izvođenje upita za geolokacijsko pretraživanje.

Zaključno, integracija Google Maps s Elasticsearch omogućuje vam da iskoristite značajke geolokacijskog pretraživanja u svojim podacima, omogućujući točno i učinkovito pretraživanje na temelju geolokacijskih informacija.