Введение в поиск по геолокации в Elasticsearch

Во-первых, вам необходимо установить Elasticsearch на свой сервер или использовать облачный Elasticsearch сервис, такой как Elastic Cloud. Убедитесь, что вы установили совместимую версию Elasticsearch с плагином GeoPoint.

 

Установите и настройте плагин GeoPoint

Elasticsearch поддерживает поиск по геолокации через плагин GeoPoint. Чтобы установить этот плагин, вы можете использовать Elasticsearch инструмент управления плагинами.

Например, если вы используете Elasticsearch версию 7.x, вы можете запустить следующую команду, чтобы установить плагин GeoPoint:

bin/elasticsearch-plugin install ingest-geoip

После установки подключаемого модуля GeoPoint вам необходимо настроить индекс для использования типа данных «geo_point» для поля, в котором будет храниться информация о геолокации. Для этого вы можете либо отредактировать сопоставление существующего индекса, либо создать новый индекс с настроенным сопоставлением.

 

Определите поле геолокации в отображении

Добавьте поле геолокации в свой индекс и отредактируйте сопоставление для этого поля. Поле геолокации обычно использует тип данных "geo_point". Отображение определяет атрибуты и параметры поля геолокации, такие как точность координат, формат и т. д.

Пример:

PUT /my_locations_index  
{  
  "mappings": {  
    "properties": {  
      "location": {  
        "type": "geo_point"  
      }  
    }  
  }  
}  

 

Изменить данные

Добавляйте информацию о геолокации в свои документы. Обычно информация о геолокации представлена ​​парой координат longitude и latitude. Вы можете получить эту информацию от пользователей, используя Google Maps API или другие источники данных геолокации.

Пример:

PUT /my_locations_index/_doc/1  
{  
  "name": "Ba Dinh Square",  
  "location": {  
    "lat": 21.03405,  
    "lon": 105.81507  
  }  
}  

 

Выполнить поиск по геолокации

Теперь, когда у вас есть данные о геолокации в вашем Elasticsearch индексе, вы можете выполнять поисковые запросы по геолокации, чтобы найти документы рядом с определенным местом или в пределах определенного географического диапазона. Чтобы выполнить поиск по геолокации, вы можете использовать Elasticsearch соответствующие запросы, такие как geo_distance, geo_bounding_box, geo_polygon и т. д.

Пример: найти местоположения рядом с координатами(21.03405, 105.81507) в радиусе 5 км.

GET /my_locations_index/_search  
{  
  "query": {  
    "geo_distance": {  
      "distance": "5km",  
      "location": {  
        "lat": 21.03405,  
        "lon": 105.81507  
      }  
    }  
  }  
}  

 

Интегрировать Google Maps

Если вы хотите интегрироваться Google Maps с Elasticsearch для получения информации о геолокации от пользователей, вы можете использовать Google Maps API для получения координат долготы и широты на основе адреса или местоположения, выбранного пользователями. Затем вы можете использовать эту информацию для добавления данных геолокации в свой Elasticsearch индекс и выполнения поисковых запросов по геолокации.

В заключение, интеграция Google Maps с Elasticsearch позволяет вам использовать функции поиска по геолокации в ваших данных, обеспечивая точный и эффективный поиск на основе информации о геолокации.