|
|
Zveřejněno 09.01.2019 17:25:39
|
|
|

Krátký úvod
Víme, že ES podporuje širokou škálu datových typů, kromě běžných základních datových typů také podporuje datové typy, které zaznamenávají informace o poloze. V ES existují dva typy dat, která zaznamenávají geolokační informace, a to geo_shap a geo_point, a níže stručně představím geo_point typy geo_point podporuje více metod přenosu dat:
Struna Pozice: lat+ "", + lon
pole Pozice: {"lat": ...,"lon": ...}
Cíl Místo: [dlouhá, šířka]
Poznámka: Pravděpodobně každý na tuto jámu šlápl alespoň jednou == Geografické souřadnicové body jsou nejprve zeměpisná šířka a délka poslední ("zeměpisná šířka, délka"), když jsou vyjádřeny řetězci, zatímco pole jsou reprezentována opačně, kde je nejprve zeměpisná délka a na konci šířka ([zeměpisná délka, šířka]). Ve skutečnosti je v Elasticesearch, ať už ve formě řetězce nebo pole, nejprve zeměpisná šířka a délka až poslední. V počátcích však byla pro přizpůsobení specifikaci formátování GeoJSON upravena reprezentace tvarů polí. To je vysvětleno na oficiálních stránkách. Obecně existují následující požadavky na dotazy pro geo_point typy dotazů
Dotaz na vzdálenost Najděte body v dosahu od středového bodu
Dotaz na vzdálenostní rozsah (zastaralý) Dotazování bodů v rámci specifikovaného rozsahu středového bodu je v nové verzi ES z API odstraněno, takže to zde nebudu příliš vysvětlovat
Dotaz na ohraničení Najděte body uvnitř obdélníku složeného z určeného bodu
Polygonální dotaz Najděte body v polygonu složeném z více bodů
Továrna SearchSourceBuilder vytvořená pro různé dotazy v Javě je následující:
Služba následovně:
Kód řídicí vrstvy je následující:
[1]. Jak používat
Než použijeme geo_point typy, měli bychom nejprve explicitně specifikovat pole jako typ geo_point pomocí mapování při vytváření indexu, a to následovně:
Výše jsme vytvořili nový index nazvaný restraunt a v jeho mapovacím souboru explicitně specifikujeme typ pole "location" jako "geo_point".
[2] Připravte nějaká data
O Kibaně jsme připravili následující data:
Připravili jsme 7 dat výše a pak musíme spustit dotaz, abychom zjistili, zda naše rozhraní splňuje naše požadavky.
[3] Šetření
Vzdálenost dotazu
Další dvě dotazy jsou stejné jako výše.
|
Předchozí:ElasticsearchParseException[pole musí být buď [lat], [lon] nebo [geohash]]Další:Discuz nainstaluje aplikaci a řekne "Data nejsou rozpoznána, prosím vrátit" – obcházení
|