기본 용어

인덱스
데이터 저장 공간, 하나의 인덱스는 하나의 타입만 가지며 하나의 물리적인 노드에 여러 개의 논리적인 인덱스를 생성할 수 있다.
- 인덱스 이름으로 문서 데이터를 검색하며, 여러 개의 인덱스를 동시에 검색하는 것도 가능하다.
- 엘라스틱 서치를 분산 환경으로 구성 시, 하나의 인덱스가 여러 노드에 분산 저장되어, 여러 이점을 얻을 수 있다.
- 인덱스 생성 시 기본적으로 5개의 primary 샤드, 1개의 Replica 샤드 세트를 생성
- 인덱스의 이름은 모두 소문자여야 하며 RestFul API로 수행 가능하다(인덱스가 없는 상태로 데이터 추가 시 자동 생성)
샤드
인덱스 내부에 색인된 데이터는 물리적인 공간에 여러 파티션으로 나뉘어 구성되는데 이 파티션을 샤드라고 부른다.
- 엘라스틱서치는 다수의 샤드로 문서를 분산 저장하고 있어 데이터 손실 위험을 최소화할 수 있다.
타입
인덱스의 논리적인 구조를 의미하며, 인덱스 속성에 따라 분류하기도 한다.
- 엘라스틱 6.1 버전부터는 인덱스당 하나의 타입만 사용가능하다.
- 6.0 이하 버전은 특정 카테고리를 분리하는 목적으로 많이 사용했으나 현재는 타입 사용을 권장하지 않기 때문에 별도로 인덱스를 생성해서 사용해야 한다.
문서
엘라스틱 서치에서 데이터가 저장되는 최소 단위로 기본적으로 JSON 포맷으로 데이터가 저장된다.
- DB의 테이블 행에 해당한다.
- 하나의 문서는 다수의 타수의 필드로 수성되어 있는데, 각 필드는 형태에 따라 용도에 맞는 데이터 타입을 정의해야 한다.
- 중첩 구조도 지원하기 때문에 문서 안에 문서를 지정하는 것도 가능하다.
필드
문서를 구성하기 위한 속성
- DB의 열(Column)에 해당하지만, 열에 비해 좀 더 동적인 데이터 타입이다.
- 하나의 필드는 목적에 따라 다수의 데이터 타입을 가질 수 있다.
매핑
문서의 필드와 속성을 정의하고 그에 따른 색인 방법을 정의하는 프로세스
- 인덱스의 매핑 정보에는 여러 가지 데이터 타입을 지정할 수 있지만 필드명은 중복해서 사용할 수 없다.
노드의 종류
클러스터는 물리적인 노드 인스턴스의 모임으로, 모든 노드의 검색과 색인 작업을 관장하는 논리적인 개념이다.
분산처리를 위해서는 다양한 형태의 노드들을 조합해서 클러스터를 구성해야 하며, 기본적으로 마스터 노드가 전체적인 클러스터를 관리하고 데이터 노드가 실제 데이터를 관리하다.
마스터 노드
인덱스를 생성, 삭제 등 클러스터와 관련된 전반적인 작업을 담당
node.master: true
node.data: false
node. ingest: false
search.remote.connect: false
- 네트워크 속도가 빠르고 지연이 없는 노드를 마스터 노드로 선정해야한다.
- 마스터 노드를 다수 선정 할 수 있으나, 결과적으로는 하나의 노드만 마스터 노드로 선정된다.
- elasticsearch.yml 파일로 설정 가능하다.
데이터 노드
문서가 실제로 저장되는 노드, 데이터가 실제로 분산 저장되는 샤드가 배치되는 노드이다.
node.master: false
node.data: true
node. ingest: false
search.remote.connect: false
- 마스터 노드와 분리해서 구성하는 것이 좋다.
코디네이팅 노드
들어온 요청을 단순히 라운드로빈 방식으로 분산시켜 주는 노드
node.master: false
node.data: false
node. ingest: false
search. remote.connect: false
인제스트 노드
데이터를 전처리하기 위한 노드, 데이터 포맷을 변경하기 위해 스크립트로 전처리 파이프라인을 구성하고 실행할 수 있다.
node.master: false
node.data: false
node. ingest: true
search.remote.connect: false
클러스터, 노드, 샤드

Elastic Search 클러스터는 인덱스의 문서 조회 시, 아래와 같은 순서로 데이터를 조회한다.
- 마스터 노드를 통해 노드를 조회한다.
- 각 데이터를 취합한다.
- 결과를 하나로 합쳐서 제공한다.
클러스터가 여러 개일 경우 클러스터 이름으로 각각을 구분할 수 있으며, 이름이 명시되지 않을 경우 클러스터 이름을 임의의 문자열로 지정한다.
클러스터에 있는 노드는 실시간으로 추가, 제거가 가능해 가용성이나, 확장성 측면에서 유리하다.
'Elastic Search' 카테고리의 다른 글
| Ch03. 데이터 모델링 - 필드 데이터 타입 (0) | 2025.09.07 |
|---|---|
| Ch03. 데이터 모델링 - 메타 필드 (0) | 2025.09.07 |
| Ch03. 데이터 모델링 - 매핑 API (0) | 2025.09.07 |
| Ch02. 엘라스틱서치 살펴보기 - 주요 API (0) | 2025.09.06 |
| Ch01. 검색 시스템 이해하기 (0) | 2025.09.02 |