Lyhyt johdanto
Tiedämme, että ES tukee monenlaisia tietotyyppejä, ja perustietotyyppien lisäksi se tukee myös tietotyyppejä, jotka tallentavat sijaintitietoja. ES:ssä on kaksi tyyppiä dataa, jotka tallentavat paikannustietoa, nimittäin geo_shap ja geo_point, ja esittelen lyhyesti geo_point tyypit alla geo_point tukee useita tiedonsiirtomenetelmiä:
Merkkijono Sijainti: leveys + "," + lon
taulukko Sijainti: {"lat": ...,"lon": ...}
Tavoite Sijainti: [lon, leveys]
Huomautus: Luultavasti jokainen on astunut tälle kuopalle vähintään kerran == Maantieteelliset koordinaatit ovat leveysaste ensin ja pituusaste viimeinen ("leveysaste, pituusaste"), kun taas taulukot esitetään vastakkaisessa muodossa, pituusaste ensin ja leveysaste viimeinen ([pituusaste, leveysaste]). Itse asiassa Elasticesearchissa, olipa se jonon tai taulukon muodossa, leveysaste tulee ensin ja pituusaste viimeisenä. Kuitenkin alkuvaiheessa, jotta GeoJSONin muotoilumäärittelyyn saatiin mukautettua, taulukkomuotojen esitystä muutettiin. Tämä selitetään virallisella verkkosivustolla. Yleisesti ottaen seuraavat kyselyvaatimukset geo_point tyypeille
Etäisyyskysely Etsi pisteitä kantaman sisällä keskipisteestä
Etäisyysalueen kysely (vanhentunut) Kyselypisteet keskipisteen määritetyllä alueella poistetaan API:sta uudessa ES-versiossa, joten en selitä tätä tässä liikaa
rajoittava kysely Etsi pisteitä suorakulmion sisältä, joka koostuu tietystä pisteestä
Polygon-kysely Etsi pisteitä monikulmiosta, joka koostuu useista pisteistä
Java-kyselyille rakennettu SearchSourceBuilder-tehdas on seuraava:
Palvelus on seuraava:
Ohjainkerroksen koodi on seuraava:
[1]. Kuinka käyttää
Ennen kuin käytämme geo_point-tyyppejä, meidän tulisi ensin määritellä kenttä eksplisiittisesti geo_point-tyypiksi kartoittamalla indeksiä luodessamme seuraavasti:
Yllä olemme luoneet uuden indeksin nimeltä restraunt, ja sen kartoitustiedostossa määrittelemme nimenomaisesti "sijainti"-kentän tyypiksi "geo_point"
[2] Valmistele dataa
Kibanasta olemme valmistelleet seuraavat tiedot:
Olemme valmistelleet yllä seitsemän tietoa, ja sitten meidän täytyy suorittaa kysely nähdäksemme, täyttääkö rajapintamme tarpeemme.
[3] Tutkinta
Kyselyetäisyys
Kaksi muuta kysymystä ovat samat kuin yllä.
|