Uvod v iskanje po geolokaciji v Elasticsearch

Najprej morate namestiti Elasticsearch na svoj strežnik ali uporabiti storitev v oblaku, Elasticsearch kot je Elastic Cloud. Preverite, ali ste namestili združljivo različico Elasticsearch z vtičnikom GeoPoint.

 

Namestite in konfigurirajte vtičnik GeoPoint

Elasticsearch podpira geolokacijsko iskanje prek vtičnika GeoPoint. Če želite namestiti ta vtičnik, lahko uporabite Elasticsearch orodje za upravljanje vtičnikov.

Na primer, če uporabljate Elasticsearch različico 7.x, lahko zaženete naslednji ukaz za namestitev vtičnika GeoPoint:

bin/elasticsearch-plugin install ingest-geoip

Po namestitvi vtičnika GeoPoint morate svoj indeks konfigurirati za uporabo vrste podatkov "geo_point" za polje, ki bo vsebovalo informacije o geolokaciji. Če želite to narediti, lahko uredite preslikavo obstoječega indeksa ali ustvarite nov indeks s konfigurirano preslikavo.

 

Določite polje geolokacije v preslikavi

Dodajte polje geolokacije v svoj indeks in uredite preslikavo za to polje. Geolokacijsko polje običajno uporablja podatkovni tip "geo_point". Preslikava bo določila atribute in možnosti za geolokacijsko polje, kot so natančnost koordinat, oblika in drugo.

primer:

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

 

Uredi podatke

Svojim dokumentom dodajte informacije o geolokaciji. Običajno so informacije o geolokaciji predstavljene kot par longitude in latitude koordinate. Te informacije lahko pridobite od uporabnikov, ki uporabljajo Google Maps API ali druge geolokacijske vire podatkov.

primer:

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

 

Izvedite geolokacijsko iskanje

Zdaj, ko imate geolokacijske podatke v svojem Elasticsearch indeksu, lahko izvajate geolokacijske iskalne poizvedbe, da poiščete dokumente v bližini določene lokacije ali znotraj določenega geografskega območja. Če želite izvesti geolokacijsko iskanje, lahko uporabite Elasticsearch ustrezne poizvedbe, kot so geo_distance, geo_bounding_box, geo_polygon itd.

Primer: poiščite lokacije blizu koordinat(21.03405, 105.81507) v radiju 5 km.

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

 

Integriraj Google Maps

Če se želite integrirati Google Maps z Elasticsearch za pridobivanje informacij o geolokaciji od uporabnikov, lahko uporabite Google Maps API za pridobitev koordinat zemljepisne dolžine in širine na podlagi naslova ali lokacije, ki jo izberejo uporabniki. Nato lahko te podatke uporabite za dodajanje geolokacijskih podatkov v svoj Elasticsearch indeks in izvajanje geolokacijskih iskalnih poizvedb.

Skratka, integracija Google Maps z Elasticsearch vam omogoča, da v svojih podatkih izkoristite funkcije geolokacijskega iskanja, kar omogoča natančno in učinkovito iskanje na podlagi informacij o geolokaciji.