2025년 6월 3일
출처:
Elasticsearch(이하 ES)는 Apache Lucene 기반의 오픈소스 분산 검색 및 분석 엔진입니다. Lucene이 검색 엔진의 핵심 라이브러리라면, Elasticsearch는 이를 감싸고 분산 처리, RESTful API, JSON 데이터 저장 등 실무에 바로 쓸 수 있는 형태로 발전시킨 시스템입니다.
- 주요 특징
- 대용량 데이터의 빠른 저장, 검색, 분석
- 분산 구조로 수평 확장(Scale-out) 및 고가용성 제공
- RESTful API와 JSON 포맷 지원
- 다양한 데이터(정형, 비정형, 텍스트, 숫자, 위치 정보 등) 처리
- 거의 실시간(Near Real Time, NRT) 검색 및 집계
Elasticsearch와 Lucene의 관계
- Lucene: 자바 기반의 고성능 정보 검색 라이브러리. 색인, 검색, 점수 계산 등 검색 엔진의 핵심 기능 제공. 단독으로는 라이브러리 형태라 직접 개발이 필요414.
- Elasticsearch: Lucene을 코어로 사용하면서, 분산 처리, 클러스터 관리, REST API, JSON 문서 저장 등 실무에 필요한 기능을 추가한 완성형 검색 시스템.
Elasticsearch의 기본 구조
용어(ES) |
RDBMS 대응 |
설명 |
인덱스(Index) |
데이터베이스(Database) |
문서들의 논리적 집합, 데이터 저장 단위 |
샤드(Shard) |
파티션(Partition) |
인덱스를 분산 저장하는 물리적 단위, Lucene 인덱스 1개를 래핑 |
문서(Document) |
행(Row) |
저장되는 데이터의 최소 단위, JSON 객체 |
필드(Field) |
열(Column) |
문서 내의 데이터 속성 |
매핑(Mapping) |
스키마(Schema) |
데이터 구조와 타입 정의 |
클러스터(Cluster) |
- |
여러 노드의 집합, 전체 데이터를 관리 |
노드(Node) |
- |
클러스터를 구성하는 서버 단위 |
- 샤드(Shard): 인덱스를 여러 개의 작은 단위로 나누어 분산 저장. 기본적으로 Primary Shard와 Replica Shard(복제본)로 구성되어 고가용성과 확장성 보장.
- 노드(Node): ES 클러스터를 구성하는 서버. 역할에 따라 마스터, 데이터, 인제스트, 코디네이팅 노드 등으로 구분.
데이터 저장 및 검색 방식
- 문서(Document): ES는 데이터를 JSON 문서 형태로 저장합니다. 각 문서는 여러 필드로 구성됩니다.
- 색인(Indexing): 입력된 데이터는 분석기(Analyzer)를 거쳐 토큰화되고, 역색인(Inverted Index) 구조로 저장되어 빠른 검색이 가능해집니다.
- 검색(Query): 사용자가 입력한 질의(Query)는 역시 분석기를 거쳐 토큰화된 뒤, 역색인 구조를 통해 관련 문서를 빠르게 찾아냅니다. 검색 결과는 BM25 등 알고리즘을 통해 점수화되어 정렬됩니다.