ElasticSearch를 도입하게 된 이유
대량 거래 데이터에서 여러 조건을 조합해 이상 건을 찾는 작업이 RDBMS 인덱스로는 한계가 있어 ElasticSearch를 도입한 과정과, 역인덱스·색인 시점 분석으로 검색이 빠른 이유를 정리합니다.
2026.08.30 — 2026.09.03 · Elasticsearch · 다 읽는 데 약 52분
대량 거래 데이터에서 여러 조건을 조합해 이상 건을 찾는 작업이 RDBMS 인덱스로는 한계가 있어 ElasticSearch를 도입한 과정과, 역인덱스·색인 시점 분석으로 검색이 빠른 이유를 정리합니다.
RDBMS와 ElasticSearch의 용어 차이를 정리하고, 인덱스 생성·삭제, 매핑 정의, 도큐먼트 삽입 같은 기본 명령어를 MySQL 작업과 대응시켜 실습합니다.
역인덱스가 단어 단위 검색을 빠르게 만드는 원리와, MySQL 인덱스 대비 역인덱스가 감수하는 쓰기·갱신 비용의 트레이드오프를 정리합니다.
ElasticSearch를 실제 프로젝트에 적용할 때 마주치는 쓰기 증폭과 딥 페이징 문제, 그리고 페이징 화면을 유지하면서 이를 완화한 방법을 정리합니다.
색인 요청이 JVM 힙, 페이지 캐시, 디스크를 거쳐 저장되는 순서와 Lucene의 flush·commit, Elasticsearch의 refresh·translog·flush가 각각 맡는 역할을 그림과 함께 정리합니다.
문자열이 토큰으로 나뉘는 과정을 캐릭터 필터·토크나이저·토큰 필터 단계로 나눠 살펴보고, 색인과 검색에 같은 애널라이저가 쓰이는 방식과 한글 검색을 위한 Nori 설정을 정리합니다.
ElasticSearch 매핑의 개념과 자주 사용하는 데이터 타입을 정리하고, 문자열을 text와 keyword로 구분해 저장해야 하는 이유를 예제 그림과 함께 설명합니다.
ElasticSearch의 match, term, terms 쿼리를 예제와 함께 정리하고, 검색어가 저장된 값과 어떻게 비교되는지에 따라 각각 어떤 상황에 적합한지 설명합니다.
ElasticSearch에서 2가지 이상의 조건을 동시에 만족하는 데이터를 조회할 때 사용하는 bool 쿼리의 4가지 기능과, must와 filter가 score에 주는 영향의 차이를 예제로 정리합니다.
bool 쿼리의 must_not으로 특정 조건에 해당하는 데이터를 결과에서 제외하는 방법을, 공지 글 조건을 filter에 두는 방식과 must_not에 두는 방식으로 나눠 예제와 함께 정리합니다.