Geolokacijos paieškos įvadas Elasticsearch

Pirmiausia turite įdiegti Elasticsearch savo serveryje arba naudoti debesyje pagrįstą Elasticsearch paslaugą, pvz., Elastic Cloud. Įsitikinkite, kad įdiegėte suderinamą versiją Elasticsearch su GeoPoint papildiniu.

 

Įdiekite ir sukonfigūruokite „GeoPoint“ papildinį

Elasticsearch palaiko geografinės vietos paiešką per GeoPoint papildinį. Norėdami įdiegti šį papildinį, galite naudoti Elasticsearch papildinio valdymo įrankį.

Pavyzdžiui, jei naudojate Elasticsearch 7.x versiją, galite paleisti šią komandą, kad įdiegtumėte GeoPoint papildinį:

bin/elasticsearch-plugin install ingest-geoip

Įdiegę „GeoPoint“ papildinį, turite sukonfigūruoti indeksą, kad lauke, kuriame bus saugoma geografinės vietos informacija, būtų naudojamas duomenų tipas „geo_point“. Norėdami tai padaryti, galite redaguoti esamo indekso susiejimą arba sukurti naują indeksą su sukonfigūruotu susiejimu.

 

Apibrėžkite geografinės vietos lauką žemėlapiuose

Pridėkite geografinės vietos lauką prie savo indekso ir redaguokite to lauko atvaizdavimą. Geografinės vietos lauke paprastai naudojamas duomenų tipas „geo_point“. Atvaizdavimas apibrėžs geografinės vietos lauko atributus ir parinktis, pvz., koordinačių tikslumą, formatą ir kt.

Pavyzdys:

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

 

Redaguoti duomenis

Pridėkite geografinės vietos informaciją prie savo dokumentų. Paprastai geografinės vietos informacija pateikiama kaip pora longitude ir latitude koordinatės. Šią informaciją galite gauti iš vartotojų, naudodami Google Maps API arba kitus geografinės vietos duomenų šaltinius.

Pavyzdys:

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

 

Atlikite geografinės vietos paiešką

Dabar, kai indekse yra geografinės vietos duomenų Elasticsearch, galite atlikti geografinės vietos paieškos užklausas, kad rastumėte dokumentus netoli konkrečios vietos arba tam tikrame geografiniame diapazone. Norėdami atlikti geografinės vietos paiešką, galite naudoti Elasticsearch atitinkamas užklausas, pvz., geo_distance, geo_bounding_box, geo_polygon ir kt.

Pavyzdys: Raskite vietas šalia koordinačių(21.03405, 105.81507) 5 km spinduliu.

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

 

Integruoti Google Maps

Jei norite integruoti Google Maps, Elasticsearch kad gautumėte geografinės vietos informaciją iš vartotojų, galite naudoti Google Maps API ilgumos ir platumos koordinates pagal vartotojų pasirinktą adresą arba vietą. Tada galite naudoti šią informaciją norėdami įtraukti geografinės vietos duomenis į savo Elasticsearch indeksą ir atlikti geografinės vietos paieškos užklausas.

Apibendrinant galima teigti, kad integravimas Google Maps su Elasticsearch leidžia panaudoti geografinės vietos paieškos funkcijas savo duomenyse, o tai leidžia atlikti tikslią ir efektyvią paiešką pagal geografinės vietos informaciją.