Elasticsearch
Elasticsearch
개요
Elasticsearch는 대규모 텍스트 검색과 로그·메트릭 분석에 강한 오픈소스 분산 검색 엔진이에요. 역인덱스(inverted index) 덕분에 수십억 건의 문서에서도 원하는 단어를 밀리초 단위로 찾아내죠. JSON 문서를 인덱스(색인)에 넣고, 분석(analyzer)으로 텍스트를 토큰으로 쪼갠 뒤, 쿼리 DSL이나 _search API로 검색해요.
왜 Elasticsearch를 쓰는지 궁금하다면 핵심은 **'검색하기 좋게 만든 독특한 데이터 구조'**예요. 관계형 DB가 정확한 일치에 강하다면, Elasticsearch는 '관련성'까지 고려한 전체 텍스트 검색과 집계에 최적화돼 있어요. 매핑(mapping), 분석(analysis), 쿼리 DSL이라는 세 축이 그것을 만들어 줘요.
핵심 개념
- 인덱스(Index) — 문서를 모아 둔 컬렉션. 관계형 DB의 테이블과 비슷한 위치예요.
- 문서(Document) — 인덱스에 저장하는 JSON 데이터 단위.
- 매핑(Mapping) — 문서의 필드가 어떻게 저장·색인되는지 정의하는 것.
- 분석(Text analysis) — 텍스트를 토큰으로 쪼개고 정규화해 검색 가능하게 만드는 과정.
- 쿼리 DSL(Query DSL) — JSON 기반의 검색 쿼리 언어. 유사도 점수로 관련성을 매겨요.
- 집계(Aggregation) — 검색 결과를 요약·통계화하는 기능.
심화 챕터
Elasticsearch의 핵심은 아래 챕터에서 공식 문서를 기준으로 더 깊게 다뤄요.
- 검색 인터페이스: Elasticsearch에서 검색 인터페이스 고르기 — Query DSL·Retrievers·ES|QL 비교
- 검색 API: _search API로 검색하기 — REST 검색 요청과 응답, 페이징·정렬·타임아웃
- 쿼리 언어: 쿼리 DSL — 쿼리 절, 유사도 점수, 필터 컨텍스트, 집계
- 데이터 정의: 인덱스 매핑 — 동적·명시 매핑, 매핑 갱신 제약, 멀티필드
- 텍스트 처리: 텍스트 분석 — 토큰화·정규화, 분석기 구성 요소