|
|
Zverejnené 9. 1. 2019 17:25:39
|
|
|

Stručný úvod
Vieme, že ES podporuje širokú škálu dátových typov, okrem našich bežných základných dátových typov podporuje aj dátové typy, ktoré zaznamenávajú informácie o polohe. V ES existujú dva typy dát, ktoré zaznamenávajú geolokačné informácie, a to geo_shap a geo_point, a nižšie stručne predstavím geo_point typy geo_point podporuje viacero metód prenosu dát:
Struna Pozícia: lat + "," + lon
pole Pozícia: {"lat": ...,"lon": ...}
Cieľ Poloha: [dĺžka, šírka]
Poznámka: Pravdepodobne každý na túto jamu stúpil aspoň raz == Geografické súradnicové body sú zemepisná šírka ako prvá a zemepisná dĺžka posledná ("zemepisná šírka, dĺžka"), keď sú vyjadrené ako reťazce, zatiaľ čo polia sú reprezentované opačným spôsobom, pričom zemepisná dĺžka je prvá a zemepisná šírka posledná ([zemepisná dĺžka, zemepisná šírka]). V skutočnosti, v rámci Elasticesearch, či už ide o reťazec alebo pole, zemepisná šírka je na prvom mieste a na konci dĺžka. Avšak v začiatkoch, aby sa prispôsobili formátovacej špecifikácii GeoJSON, bola upravená reprezentácia foriem polí. Toto je vysvetlené na oficiálnej webovej stránke. Pre geo_point typy dopytov sú všeobecne uvedené nasledujúce požiadavky
Dotaz na vzdialenosť Nájdite body v dosahu od stredového bodu
Dotaz na rozsah vzdialenosti (zastarané) Dotazovanie bodov v špecifikovanom rozsahu stredového bodu je v novej verzii ES z API odstránené, takže to tu nebudem príliš vysvetľovať
Ohraničujúci dotaz Nájdite body v obdĺžniku pozostávajúcom zo špecifikovaného bodu
Polygónový dotaz Nájdite body v polygóne zloženom z viacerých bodov
Továreň SearchSourceBuilder vytvorená pre rôzne dotazy v Jave je nasledovná:
Služba nasledovne:
Kód vrstvy ovládača je nasledovný:
[1]. Ako používať
Predtým, než použijeme geo_point typy, mali by sme najprv explicitne určiť pole ako typ geo_point pomocou mapovania pri vytváraní indexu, nasledovne:
Vyššie sme vytvorili nový index s názvom restraunt a v jeho mapovacom súbore explicitne špecifikujeme typ poľa "location" ako "geo_point"
[2] Priprav nejaké dáta
O Kibane sme pripravili nasledujúce údaje:
Pripravili sme 7 dát vyššie uvedených a potom musíme vykonať dotaz, aby sme zistili, či naše rozhranie spĺňa naše potreby.
[3] Vyšetrovanie
Vzdialenosť dotazu
Ostatné dve otázky sú rovnaké ako vyššie.
|
Predchádzajúci:ElasticsearchParseException[pole musí byť buď [lat], [lon] alebo [geohash]]Budúci:Discuz nainštaluje aplikáciu a hovorí "Dáta nie sú rozpoznané, prosím, vráť" – obchádzka
|