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