Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 15452|Відповідь: 0

[Джерело] Геолокація Java в ElasticSearch (geo_point)

[Копіювати посилання]
Опубліковано 09.01.2019 17:25:39 | | |
Короткий вступ

Ми знаємо, що ES підтримує широкий спектр типів даних, окрім наших звичайних базових типів даних, він також підтримує типи даних, які фіксують інформацію про місцезнаходження. У ES існують два типи даних, які фіксують геолокацію: geo_shap та geo_point, і я коротко представим geo_point типи нижче
geo_point підтримує кілька методів передачі даних:

Рядок
Положення: широта + "," + лон

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

Мета
Місцезнаходження: [лон, широта]


Примітка: Ймовірно, кожен наступав на цю яму хоча б раз == Географічні координати — це широта перша і остання ("широта, довгота"), якщо виражати як струни, тоді як масиви представлені у протилежному вигляді — спочатку довгота і остання ([довгота, широта]). Насправді, у Elasticesearch, чи то у вигляді струни, чи масиву, широта йде на перше місце, а довгота — останнім. Однак на початку, щоб адаптуватися до специфікації форматування GeoJSON, подання форм масивів було скориговано. Це пояснено на офіційному сайті.
Зазвичай існують такі вимоги до запитів для типів geo_point

Запит на відстань
Знайдіть точки в межах зони дії від центральної точки

Запит до діапазону відстані (застарілий)
Запити точок у заданому діапазоні центральної точки видаляються з API у новій версії ES, тому я не буду тут надто багато пояснювати
Обмежувальний запит
Знайдіть точки в прямокутнику, що складається з заданої точки

Запит до полігону
Знайдіть точки в багатокутнику, що складається з кількох точок

Фабрика SearchSourceBuilder, створена для різних запитів на Java, виглядає так:


Обслуговування наступним чином:

Код рівня контролера виглядає так:

[1]. Як користуватися

Перед тим, як використовувати geo_point типи, спочатку слід явно вказати поле як geo_point тип за допомогою відображення при створенні індексу, наступним чином:


Вище ми створили новий індекс під назвою restraunt, і в його файлі відображення чітко вказуємо тип поля «location» як «geo_point»

[2] Підготуйте деякі дані

Щодо Кібани ми підготували такі дані:


Ми підготували 7 даних вище, а потім потрібно виконати запит, щоб перевірити, чи відповідає наш інтерфейс нашим потребам.

[3] Розслідування

Відстань запиту


Інші два запити такі ж, як і вище.




Попередній:ElasticsearchParseException[поле має бути або [lat], [lon], або [geohash]]
Наступний:Discuz встановлює додаток і повідомляє «Дані не розпізнаються, будь ласка, поверніть»
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com