Johdatus Geolocation Searchiin Elasticsearch

Ensinnäkin sinun on asennettava Elasticsearch palvelimellesi tai käytettävä pilvipohjaista Elasticsearch palvelua, kuten Elastic Cloud. Varmista, että asennat yhteensopivan version Elasticsearch GeoPoint-laajennuksella.

 

Asenna ja määritä GeoPoint-laajennus

Elasticsearch tukee maantieteellisen sijainnin hakua GeoPoint-laajennuksen kautta. Voit asentaa tämän laajennuksen käyttämällä Elasticsearch laajennusten hallintatyökalua.

Jos käytät esimerkiksi Elasticsearch versiota 7.x, voit asentaa GeoPoint-laajennuksen suorittamalla seuraavan komennon:

bin/elasticsearch-plugin install ingest-geoip

Kun olet asentanut GeoPoint-laajennuksen, sinun on määritettävä hakemistosi käyttämään "geo_point" -tietotyyppiä kentässä, joka sisältää maantieteelliset tiedot. Voit tehdä tämän joko muokkaamalla olemassa olevan indeksin kartoitusta tai luomalla uuden indeksin määritetyllä kartoituksella.

 

Määritä Geolocation Field Mappingissa

Lisää maantieteellisen sijainnin kenttä hakemistoosi ja muokkaa kentän kartoitusta. Geolocation-kenttä käyttää yleensä "geo_point"-tietotyyppiä. Kartoitus määrittää geopaikannuskentän attribuutit ja vaihtoehdot, kuten koordinaattien tarkkuuden, muodon ja paljon muuta.

Esimerkki:

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

 

Muokkaa tietoja

Lisää maantieteellisiä tietoja asiakirjoihin. Tyypillisesti maantieteelliset sijaintitiedot esitetään parina longitude ja latitude koordinaatteina. Voit saada nämä tiedot käyttäjiltä käyttämällä Google Maps API tai muita maantieteellisiä tietolähteitä.

Esimerkki:

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

 

Suorita Geolocation Search

Nyt kun sinulla on maantieteellisiä tietoja hakemistossasi Elasticsearch, voit suorittaa maantieteellisen sijainnin hakukyselyitä löytääksesi asiakirjoja tietyn sijainnin läheltä tai tietyltä maantieteelliseltä alueelta. Voit suorittaa maantieteellisen sijainnin haun käyttämällä Elasticsearch vastaavia kyselyitä, kuten geo_distance, geo_bounding_box, geo_polygon jne.

Esimerkki: Etsi paikkoja lähellä koordinaatteja(21.03405, 105.81507) 5 km säteellä.

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

 

Integroi Google Maps

Jos haluat integroida Google Maps kanssa Elasticsearch saadaksesi paikkatietoja käyttäjiltä, ​​voit hakea Google Maps API pituus- ja leveysastekoordinaatit käyttäjien valitseman osoitteen tai sijainnin perusteella. Tämän jälkeen voit käyttää näitä tietoja maantieteellisen sijainnin lisäämiseen hakemistoosi Elasticsearch ja maantieteellisen sijainnin hakukyselyjen suorittamiseen.

Yhteenvetona voidaan todeta, että integroinnin Google Maps avulla Elasticsearch voit hyödyntää tiedoissasi maantieteellisen sijainnin hakuominaisuuksia, mikä mahdollistaa tarkan ja tehokkaan haun maantieteellisen sijaintitietojen perusteella.