위치정보 검색 소개 Elasticsearch

먼저 Elasticsearch 서버에 설치하거나 Elasticsearch Elastic Cloud와 같은 클라우드 기반 서비스를 사용해야 합니다. Elasticsearch GeoPoint 플러그인과 호환되는 버전을 설치해야 합니다 .

 

GeoPoint 플러그인 설치 및 구성

Elasticsearch GeoPoint 플러그인을 통한 지리적 위치 검색을 지원합니다. 이 플러그인을 설치하려면 플러그인 관리 도구를 사용할 수 있습니다 Elasticsearch.

예를 들어 버전 7.x를 사용하는 경우 Elasticsearch 다음 명령을 실행하여 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 등과 같은 의 해당 쿼리를 사용할 수 있습니다.

예: 반경 5km 이내의 좌표(21.03405, 105.81507) 근처 위치를 찾습니다.

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 에 위치정보 검색 기능을 활용할 수 있어 위치정보를 기반으로 정확하고 효율적인 검색이 가능합니다.