КатегорииElasticsearch

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, как показано ниже:

PUT example3/_mapping/address
 {
   "properties": {
     "geo_location": {
       "type": "geo_point"
     }
   }
 }

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

PUT example3/address/1
 {
   "street": "Лесная 5",
   "city": "Харчки",
   "geo_location": {
     "lat": 37.3,
     "lon": 121.8
  }
 }

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

{
   "_index": "example3",
   "_type": "address",
   "_id": "1",
   "_version": 1,
   "result": "created",
   "_shards": {
     "total": 1,
     "successful": 1,
     "failed": 0
   },
   "created": true
 }

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *