← 학습 카테고리

Learn

Elasticsearch

50개 모듈 · 현재 36번째

Elasticsearch 모듈 36/50 elasticsearch-learn-36

Geo 쿼리 — geo_point와 geo_shape로 위치 데이터를 검색한다

Elasticsearch Force Merge API 및 Geo 쿼리 공식 문서 종합 (웹 리서치, 2026) — Elastic 공식 문서(indices-forcemerge, geo-point, geo-queries, query-dsl-geo-distance-query, query-dsl-geo-bounding-box-query) Elastic 공식문서 Geopoint field type, Geo queries

이 모듈을 다 읽으면

  • geo_point와 geo_shape가 각각 어떤 형태의 위치 데이터를 표현하는지 구분할 수 있다
  • geo-distance 쿼리와 geo-bounding-box 쿼리가 각각 어떤 기준으로 문서를 걸러내는지 설명할 수 있다

elasticsearch-learn-03에서 다룬 필드 타입·매핑을 전제로, 위치 정보를 표현하고 검색하는 전용 필드 타입인 geo_point/geo_shape와 그 위에서 동작하는 대표 쿼리들을 정리한다.

geo_point vs geo_shape — 점 하나 vs 임의의 도형

geo_point 필드는 위도·경도 쌍(lat/lon) 하나, 즉 지도 위의 '점'을 표현한다. geo_shape 필드는 이보다 훨씬 표현력이 넓어서 점뿐 아니라 선(line), 원(circle), 다각형(polygon), 다중다각형(multi-polygon) 같은 임의의 도형을 표현할 수 있다. 둘 다 geo-distance·geo-bounding-box 쿼리로 검색할 수 있지만, geo_point는 거리 계산이나 집계(예: 반경 안 매장 찾기)처럼 '점' 단위 연산에 적합하고, geo_shape는 '이 배송 구역(폴리곤) 안에 있는가' 같은 임의 도형 기반 검색에 적합하다.

핵심 포인트

  • geo_point: 위도·경도 쌍(점) 하나를 표현 — 거리 계산·집계 등 점 단위 연산에 적합
  • geo_shape: 점/선/원/다각형/다중다각형 등 임의 도형 표현 — 배송구역 폴리곤 안 포함 여부 같은 도형 기반 검색에 적합

geo-distance와 geo-bounding-box — 두 가지 대표 쿼리

geo-distance 쿼리는 기준점(geopoint)으로부터 지정한 거리 안에 있는 geo_point/geo_shape 값을 매칭한다 — '이 좌표에서 반경 5km 이내'를 찾는 전형적 용도다. geo-bounding-box 쿼리는 반대 꼭짓점 두 개의 좌표로 정의한 사각형 영역과 겹치는 값을 매칭한다 — 원형이 아니라 사각형(지도 화면에 보이는 영역 같은) 범위 검색에 쓰인다. 둘 다 geo_point와 geo_shape 값 모두에 대해 동작한다는 점은 같지만, 검색 영역의 '모양'(원형 반경 vs 사각형 경계)이 다르다.

핵심 포인트

  • geo-distance 쿼리: 기준점에서 지정 거리(반경) 안의 값을 매칭 — '반경 5km 이내' 검색
  • geo-bounding-box 쿼리: 반대 꼭짓점 두 개로 정의한 사각형 영역과 겹치는 값을 매칭 — 원형이 아닌 사각형 범위 검색, 둘 다 geo_point·geo_shape 모두에 적용 가능