Elasticsearch — Урок 3.5 Тип геоданные

В предыдущих уроках мы обсудили простые и сложные типы данных, поддерживаемые Elasticsearch. В этом уроке мы разберем тип для указания географического местоположения. Elasticsearch упрощает работу с запросами на основе местоположения, такими как запрос в радиусе, агрегирование на основе местоположения, сортировка по местоположению и т. д.  

Elasticsearch поддерживает два типа данных для хранения местоположения:

  • geo-point: Используется для хранения долготы и широты позиции.
  • geo-shape: Используется для хранения гео-фигур, таких как круги и многоугольники.

В этом уроке мы обсудим только, как установить схему для типа  geo-point . Тип geo-shape предназначен для хранения гео-фигур. Чтобы узнать больше о geo-shape, перейдите по следующей ссылке:

https://www.elastic.co/guide/en/elasticsearch/reference/current/geo-shape.html

А в 7 уроке мы разберем как делать гео пространственные запросы. Использование гео-запросов не очень отличается от других запросов, за исключением нескольких параметров.

Тип geo-point данных

Мы можем установить типgeo-point для поля geo_location, как показано ниже:

В следующем примере давай добавим документ с гео позицией:

Убедитесь, что тип geo_location установлен до того, как вы добавите первый документ, иначе поле geo_location будет сохранено как объект с latи lon строками. Если все идет хорошо, вы должны увидеть примерно следующее:

Обратите внимание, что значение поля geo_location в документе также может быть представлено как:

  • строка в формате "lat,lon" ("geo_location" : "37.3,121.8")
  • массив с форматом [lon, lat] ("geo_location" : [121.8,37.3])
  • гео-хэш ("geo_location" : "wwws5wk01xyw")