Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 15452|Odpověď: 0

[Zdroj] Java geolokační informace v ElasticSearch (geo_point)

[Kopírovat odkaz]
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í
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com