Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 15452|Отговор: 0

[Източник] Информация за геолокация в Java в ElasticSearch (geo_point)

[Копирай линк]
Публикувано в 9.01.2019 г. 17:25:39 ч. | | |
Кратко въведение

Знаем, че ES поддържа голямо разнообразие от типове данни, освен обичайните ни основни типове данни, поддържа и типове данни, които записват информация за местоположението. В ES има два типа данни, които записват геолокационна информация – geo_shap и geo_point, и ще представя накратко geo_point типа по-долу
geo_point поддържа множество методи за пренос на данни:

Низ
Позиция: lat + "," + lon

Масив
Позиция: {"lat": ...,"lon": ...}

Обект
Местоположение: [лон, ширина]


Забележка: Вероятно всеки е стъпвал на тази яма поне веднъж == Географските координатни точки са първа ширина и последна ("ширина, дължина"), когато се изразяват като низове, докато масивите са представени в противоположна форма, като дължината е първа, а последна ([дължина, ширина]). Всъщност, в рамките на Elasticesearch, независимо дали е под формата на струна или масив, ширината е първа, а дължината е последна. Въпреки това, в ранните дни, за да се адаптира към спецификацията за форматиране на GeoJSON, представянето на масивните форми беше коригирано. Това е обяснено на официалния уебсайт.
Обикновено съществуват следните изисквания за заявки за geo_point типове

Заявка за разстояние
Намерете точки в обхвата от централната точка

Заявка за обхват на разстояние (остаряла)
Заявките в посочения диапазон на централната точка са премахнати от API в новата версия на ES, затова няма да обяснявам твърде много тук
Ограничителна заявка
Намерете точки в правоъгълник, състоящ се от определена точка

Polygon заявка
Намерете точки в многоъгълник, съставен от множество точки

Фабриката SearchSourceBuilder, създадена за различни заявки в Java, е следната:


Обслужване както следва:

Кодът на слоя на контролера е следният:

[1]. Как да използвате

Преди да използваме geo_point типове, първо трябва изрично да посочим полето като geo_point тип чрез съпоставяне при създаване на индекса, както следва:


По-горе създадохме нов индекс, наречен restraunt, и в неговия mapping файл изрично посочваме типа поле "location" като "geo_point"

[2] Подгответе някои данни

За Кибана сме подготвили следните данни:


Подготвили сме 7 данни по-горе и след това трябва да изпълним заявката, за да видим дали интерфейсът ни отговаря на нуждите ни.

[3] Разследване

Разстояние на заявка


Останалите две запитвания са същите като горните.




Предишен:ElasticsearchParseException[поле трябва да бъде или [lat], [lon] или [geohash]]
Следващ:Discuz инсталира приложението и казва "Данните не се разпознават, моля върните" решение
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com