ElasticSearch를 도입하게 된 이유
대량 거래 데이터에서 여러 조건을 조합해 이상 건을 찾아내는 작업이 RDBMS 인덱스로는 한계가 있어 ElasticSearch를 도입하게 된 과정을 정리합니다.
2026.08.30 — 2026.09.03 · Elasticsearch · 다 읽는 데 약 23분
대량 거래 데이터에서 여러 조건을 조합해 이상 건을 찾아내는 작업이 RDBMS 인덱스로는 한계가 있어 ElasticSearch를 도입하게 된 과정을 정리합니다.
RDBMS와 ElasticSearch의 용어 차이를 정리하고, 인덱스 생성·매핑 정의·도큐먼트 삽입 같은 기본 명령어를 실습합니다.
역인덱스가 단어 단위 검색을 빠르게 만드는 원리와, MySQL 인덱스 대비 역인덱스가 감수하는 쓰기·갱신 비용의 트레이드오프를 정리합니다.
ElasticSearch를 실제 프로젝트에 적용할 때 마주치는 쓰기 증폭과 딥 페이징 문제, 그리고 이를 완화한 방법을 정리합니다.
Lucene의 flush·commit과 Elasticsearch의 refresh·translog가 맞물려 색인과 검색을 처리하는 과정을 정리합니다.
문자열이 토큰으로 쪼개지는 과정을 캐릭터 필터·토크나이저·토큰 필터로 나눠 살펴보고, 한글 검색을 위한 Nori 설정까지 정리합니다.
ElasticSearch 매핑 개념과 자주 사용하는 데이터 타입, 그리고 text와 keyword를 구분해야 하는 이유를 정리합니다.
ElasticSearch의 match, term, terms 쿼리를 예제와 함께 정리하고 각각 어떤 상황에 적합한지 설명합니다.
ElasticSearch에서 2가지 이상의 조건을 동시에 만족시키는 데이터를 조회할 때 사용하는 bool 쿼리와 must, filter의 차이를 정리합니다.
bool 쿼리의 must_not을 활용해 특정 조건을 만족하지 않는 데이터만 골라 조회하는 방법을 정리합니다.