Elasticsearch 기본 개념
개념 | 설명 |
노드(Node) | Elasticsearch 인스턴스를 실행하는 하나의 서버 |
클러스터(Cluster) | 여러 개의 노드(Node)로 구성된 그룹 |
인덱스(Index) | 여러 개의 도큐먼트(Document)를 저장하는 논리적 데이터 단위 |
샤드(Shard) | 인덱스를 나누어 저장하는 물리적 데이터 단위 |
도큐먼트(Document) | Elasticsearch에서 데이터를 저장하는 기본 단위 (JSON 형식) |
✅ Elasticsearch는 여러 노드(Node)로 구성된 클러스터(Cluster)에서 데이터를 샤드(Shard) 단위로 나누어 저장하고 관리함.
주요 개념 상세 설명
✅ (1) 노드(Node)란?
노드는 Elasticsearch의 실행 인스턴스로, 하나 이상의 노드가 모여 클러스터를 형성합니다.
- 싱글 노드(Single Node): 한 개의 노드로 구성된 Elasticsearch 실행 환경.
- 멀티 노드(Multi Node): 여러 개의 노드가 하나의 클러스터를 형성하는 환경.
🔹 노드 확인 방법
GET _cat/nodes?v
🔹 노드 정보 예시
ip name roles heap.percent load node.role
192.168.1.10 node-1 mdi 42 1.2 master, data, ingest
192.168.1.11 node-2 mdi 35 1.5 data, ingest
192.168.1.12 node-3 mdi 50 1.1 data, ingest
✅ 각 노드는 특정 역할을 가지며 클러스터 내에서 데이터 저장, 검색, 관리 등의 작업을 수행함.
✅ (2) 클러스터(Cluster)란?
클러스터는 여러 개의 노드(Node)로 구성된 Elasticsearch의 논리적 그룹입니다.
모든 노드는 동일한 cluster.name을 가지며, 클러스터 내에서 데이터를 공유하고 검색을 수행합니다.
🔹 클러스터 상태 확인
GET _cluster/health
🔹 응답 예시
{
"cluster_name": "my-cluster",
"status": "green",
"number_of_nodes": 3,
"number_of_data_nodes": 2,
"active_primary_shards": 5,
"active_shards": 10
}
✅ 클러스터는 Elasticsearch의 핵심 구성 요소로, 노드 간 데이터 복제 및 분산 저장을 수행함.
✅ (3) 인덱스(Index)란?
인덱스는 데이터를 저장하는 논리적 공간으로, 관계형 데이터베이스의 테이블(Table) 개념과 유사합니다.
각 인덱스는 여러 개의 샤드(Shard)로 분할되며, 샤드 단위로 데이터를 저장합니다.
🔹 인덱스 생성 예제
PUT /products
{
"settings": {
"number_of_shards": 3,
"number_of_replicas": 1
}
}
✅ 인덱스는 여러 개의 도큐먼트(Document)로 구성되며, 검색과 색인의 기본 단위가 됨.
✅ (4) 샤드(Shard)란?
샤드는 인덱스를 나누어 저장하는 물리적 데이터 단위입니다.
대량의 데이터를 저장하고 검색할 때 성능을 높이기 위해 샤드 단위로 데이터를 분산 저장합니다.
- 프라이머리 샤드(Primary Shard): 원본 데이터를 저장하는 주요 샤드.
- 복제본 샤드(Replica Shard): Primary Shard의 복제본으로, 데이터 유실 방지 및 검색 성능 향상 역할.
🔹 샤드 정보 확인
GET _cat/shards?v
✅ 샤드는 인덱스 성능과 확장성을 결정하는 중요한 요소이며, 클러스터 내 여러 노드에 분산 저장됨.
✅ (5) 도큐먼트(Document)란?
도큐먼트는 Elasticsearch에서 데이터를 저장하는 가장 작은 단위입니다.
모든 도큐먼트는 JSON 형식으로 저장되며, 고유한 _id 값을 가집니다.
🔹 도큐먼트 색인 예제
PUT /products/_doc/1
{
"name": "Elasticsearch 책",
"category": "IT",
"price": 30000
}
✅ Elasticsearch는 관계형 DB처럼 행(Row) 개념이 없으며, 데이터를 JSON 문서(Document) 형태로 저장함.
프라이머리 샤드(Primary Shard)와 복제본(Replica Shard) 개념
샤드 유형 | 설명 |
Primary Shard | 원본 데이터를 저장하는 주요 샤드 |
Replica Shard | Primary Shard의 복제본으로, 데이터 유실 방지 및 검색 부하 분산 |
🔹 Primary Shard와 Replica Shard 예시
- 인덱스를 프라이머리 샤드 3개, 복제본 1개로 설정하면 총 6개의 샤드(3 Primary + 3 Replica)가 생성됨.
✅ 복제본(Replica Shard)은 반드시 Primary Shard와 다른 노드에 저장되어야 함.
노드의 역할 (Node Roles)
Elasticsearch 노드는 역할(Role)에 따라 다르게 동작합니다.
노드 | 유형 설명 |
마스터 노드 (Master Node) | 클러스터 상태 관리, 노드 추가/삭제, 샤드 할당 |
데이터 노드 (Data Node) | 데이터를 저장하고 검색 및 색인 수행 |
코디네이팅 노드 (Coordinating Node) | 클라이언트 요청을 받아 데이터 노드에 분산 |
✅ (1) 마스터 노드 (Master Node)
- 클러스터의 상태 관리 (샤드 할당, 노드 추가/삭제).
- 클러스터 설정 변경.
🔹 마스터 전용 노드 설정
node.master: true
node.data: false
✅ 마스터 노드는 클러스터 안정성을 위해 최소 3개 이상의 홀수 개수로 운영하는 것이 좋음.
✅ (2) 데이터 노드 (Data Node)
- 실제 데이터를 저장하고 색인/검색을 수행.
- CPU, 메모리, 디스크 I/O 리소스를 많이 사용.
🔹 데이터 노드 전용 설정
node.master: false
node.data: true
✅ 대량 데이터 저장이 필요한 경우 데이터 노드의 리소스를 충분히 할당하는 것이 중요함.
✅ (3) 코디네이팅 노드 (Coordinating Node)
- 클라이언트 요청을 받아 적절한 데이터 노드로 분배.
- 직접 데이터를 저장하지 않고 검색 요청을 최적화하는 역할.
🔹 코디네이팅 전용 노드 설정
node.master: false
node.data: false
✅ 대량의 검색 요청이 있는 경우 코디네이팅 노드를 추가하여 부하를 분산 가능.
결론
- Elasticsearch는 여러 개의 노드(Node)로 구성된 클러스터(Cluster)에서 데이터를 샤드(Shard) 단위로 분산 저장함.
- 프라이머리 샤드(Primary Shard)는 원본 데이터를 저장하고, 복제본(Replica Shard)은 데이터 유실 방지 역할을 수행.
- 마스터 노드는 클러스터를 관리하고, 데이터 노드는 저장 및 검색, 코디네이팅 노드는 요청을 최적화하는 역할을 함.
'Elastic Search' 카테고리의 다른 글
[LV 2] 색인(Indexing)과 검색(Search) 기본 (0) | 2025.02.02 |
---|---|
[LV 2] 인덱스(Index)와 매핑(Mapping) (0) | 2025.02.02 |
[LV 1] Elasticsearch 설치 및 기본 환경 설정 (1) | 2025.02.01 |
[LV 1] Elasticsearch 개요 (0) | 2025.02.01 |
[Elasticsearch] 엘라스틱 서치 학습 로드맵 (0) | 2025.02.01 |