Engineering
Elasticsearch 성능 비교: Box vs Polygon, 어떤 방식이 더 빠를까?
Remy여기어때
2025년 3월 28일
원문에서 보기 ↗안녕하세요! 여기어때 검색플랫폼개발팀의 레미입니다.
Elasticsearch에서 같은 사각형 영역을 검색할 때, Box 방식과 Polygon 방식의 성능은 어떻게 다를까요? 공간 검색은 위치 기반 서비스를 구현할 때 매우 중요한 기능입니다. 특히, 검색 영역이 사각형인 경우, Box와 Polygon 두 가지 접근법 중 어떤 것이 효율적인지 판단하는 것은 검색 속도와 효율성을 높이는 데 큰 영향을 미칠 수 있습니다.
이번 글에서는 두 방식을 비교 분석하고, 그 결과를 여러분과 공유하려 합니다. 🚀
1. 테스트 개요
📌 목적
동일한 검색 영역에 대해 Polygon 방식과 Box 방식의 성능을 비교하여 최적의 검색 방식을 선정하기 위함입니다. 특히, 박스 방식은 좌표 두 개(좌상단, 우하단)를 사용 하고, 폴리곤 방식은 사각형의 네 꼭짓점을 모두 명시하기 때문에 이 차이가 성능에 어떤 영향을 미치는지 알아보았습니다.
📝 테스트 환경
- 테스트 데이터: 10만 개의 좌표 데이터
- 검색 영역: 동일한 사각형 영역 적용
- 색인 방식 :
geo_point - 검색 엔진: Elasticsearch
검색 쿼리 방식
- 2개 좌표 검색 :
GeoBoundingBoxQuery사용 - 4개 좌표 검색 :
GeoPolygonQuery사용
📊 측정 항목
- 🕒 Mean_Test_Time(ms): 평균 응답 시간 (낮을수록 우수)
- ⚡ TPS (Transaction Per Second): 초당 처리 건수 (높을수록 우수)
- 📦 Mean_response_length: 평균 응답 데이터 크기
이제 본격적으로 두 방식의 성능을 비교해볼까요? 🤔
2. 테스트 결과 요약

📊 특이사항:


- 두 방식 모두 평균 응답 시간(MTT)과 TPS에서 큰 차이 없이 유사한 성능을 보였습니다.
- 특정 구간에서는 박스 및 폴리곤 방식 모두 다소 변동이 있었으나, 전반적으로 비슷한 성능을 유지했습니다.

- 평균 응답 길이(Mean_response_length)는 두 방식에서 완전히 동일하게 측정되었습니다.
📌사실, 테스트 전에는 박스 방식이 더 단순한 구조를 가지므로 성능이 더 좋을 것이라고 예상했지만, 결과는 다소 의외였습니다. 예상 외로 두 방식 모두 비슷한 응답 속도를 보여주었기 때문입니다. 이는 Elasticsearch 내부의 공간 필터링 처리 방식이 매우 최적화되어 있다는 것을 보여주는 사례입니다.
3. 분석 결과
3.1 📌이론적 성능 예상
- 🟦 박스 방식:****
- 단순 사각형 경계 검색 방식으로, 계산량이 적고 더 빠를 것으로 예상했습니다.
- 박스는 좌상단(top_left)과 우하단(bottom_right) 두 개의 좌표만을 사용해 검색 영역을 정의하므로, 불필요한 계산이 적습니다.
2. 🔺 폴리곤 방식:****
- 비정형 다각형 검색 방식으로, 사각형 영역을 포함한 4개의 꼭짓점 좌표를 사용합니다.
- 따라서, 추가적인 계산 비용이 발생할 것으로 보았습니다.
3.2 🔍 실제 테스트 결과 차이 원인 분석

하지만 실제 결과는 예상과 다르게 두 방식의 성능 차이가 거의 없었습니다. 🧐 그 이유는 Elasticsearch가 geo_point 필드를 활용해 최적화된 인덱스를 생성하기 때문입니다. 또한, 사각형 영역의 경우 GeoBoundingBoxQuery나 GeoPolygonQuery 모두 동일한 공간 필터링 로직을 사용하기에, 큰 차이를 보이지 않았던 것으로 추측됩니다.
즉, Elasticsearch 내부에서는 사각형 영역을 다각형으로 변환한 후 동일한 처리 방식으로 검색을 수행하고 있는 것일 수도 있습니다. 결국 쿼리 입력 방식만 다를 뿐, 처리 성능에는 영향을 주지 않았던 셈입니다.
4. ⚙️ Relation 옵션별 성능 차이 설명
Elasticsearch에서는 공간 검색 쿼리에 대해 relation 옵션을 제공합니다. 기본값은 intersects로, 검색 영역이 지정된 좌표와 겹치는지 여부를 판단합니다. 이번 테스트에서는 기본 옵션인 intersects가 사용되었으며, 두 방식 모두 동일한 필터링 방식을 적용해 비교가 이루어졌습니다.

추가적으로, within 또는 contains와 같은 다른 관계 옵션을 사용할 경우, 결과에 차이가 발생할 수 있을 것으로 보입니다. 특히, within은 검색 대상이 영역 내부에 완전히 포함되어야 하기 때문에 처리 비용이 높아질 수 있으며, 이로 인해 응답 시간이나 TPS에 영향을 미칠 수 있습니다.
5. 🏆 결론
테스트 결과, 박스 방식과 폴리곤 방식 모두 전반적으로 유사한 성능을 보였습니다. 평균 응답 시간(MTT), TPS 모두 큰 차이가 없었으며 안정적인 성능을 유지했습니다. 평균 응답 길이(Mean_response_length) 또한 두 방식에서 동일한 결과를 나타냈습니다.
- 평균 응답 시간(MTT), TPS 모두 큰 차이가 없었으며 안정적인 성능을 유지했습니다.
- 평균 응답 길이(Mean_response_length) 또한 두 방식에서 동일한 결과를 나타냈습니다.
- 결론적으로:
- 🟦 박스 방식:** 단순 사각형 영역 검색에서는 박스 방식이 간결한 쿼리 구조를 가지므로 추천할 만합니다.**
- 🔺 폴리곤 방식:** 비정형 검색이 필요한 경우에 활용할 수 있으며, 단순 사각형 검색에는 굳**이 사용할 필요는 없었습니다.****
✨ 결국, 두 방식의 성능 차이는 무시할 수준이었다는 점에서, 상황에 따라 적절한 방식을 선택하면 될 것입니다. 🚀
6. 🚀 최종 정리 및 활용 방안
본 테스트 결과는 신뢰할 수 있으며, Elasticsearch 공간 검색 방식 선택 시 유용한 참고자료로 활용될 수 있습니다.
- 📌 검색 성능을 미세하게 최적화하려면? → 사각형 영역 검색에서는 Box 방식을 추천합니다.
- 🔍 복잡한 다각형 검색이 필요하다면? → 이때는 자연스럽게 Polygon 방식을 사용하면 좋습니다.
상황에 따라 적절한 검색 방식을 선택하는 것이 중요합니다. 또한 실제 서비스에서 다양한 쿼리 방식의 성능을 지속적으로 측정하고 개선해 나가는 것이 가장 이상적인 접근법입니다.
7. 💡왜 이런 테스트가 중요한가?
Elasticsearch의 공간 검색 성능은 실제 서비스에서 사용자 경험에 직결됩니다. 예를 들어, 위치 기반 숙소 추천 서비스에서는 검색 반응 속도가 곧 사용자 만족도로 이어지기 때문입니다. 특히 모바일 환경에서는 몇 밀리초의 차이도 체감될 수 있기 때문에, 어떤 쿼리 방식이 더 효율적인지 미리 실험해보는 것은 매우 가치 있는 작업입니다.
또한, 이 같은 테스트 결과는 팀 내 기술 공유 문서나 코드 리뷰 시에도 기준점이 되어줄 수 있으며, 실무에서 막연히 ‘더 빠를 것 같아 보이는 방식’ 대신 ‘실제 검증된 방식’을 선택하는 데 큰 도움이 됩니다.
8. 🔍향후 확장 테스트 아이디어
이번 테스트는 동일한 사각형 영역 내에서 Box vs Polygon만 비교한 실험이었습니다.
하지만 다음과 같은 확장 테스트도 흥미로울 수 있습니다:
- Geo_shape 타입을 활용한 성능 비교
- Relation 옵션별 (within, contains 등) 정밀 성능 측정
- 다각형 형태가 복잡해질수록 Polygon 방식의 성능 변화 관찰
- Geo_point가 아닌 Geo_shape를 사용한 복잡 공간 필터링
이러한 실험들을 통해 Elasticsearch 공간 검색의 한계를 더 깊이 이해하고, 다양한 실무 적용 포인트를 발굴해볼 수 있습니다.
읽어주셔서 감사합니다. 🙌