Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 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