ElasticSearch
- Apache Lucene 기반의 자바 오픈소스 분산 검색 엔진
- 방대한 양의 데이터를 신속하고 거의 실시간으로 저장, 검색, 분석
핵심 개념
1. cluster
- 하나 이상의 노드(서버)가 모인 것
- 이를 통해 전체 데이터를 저장하고 모든 노드를 포관하는 통합 색인화 및 검색 기능을 제공
- 클러스터는 고유한 이름으로 식별(식별자이므로 중요함)
2. node
- 클러스터에 포함된 단일 서버로서 데이터를 저장하고 클러스터의 색인화 및 검색 기능에 참여
3. index
4. type
- index를 논리적으로 분류/구분한 것
- 하나의 index에서 하나 이상의 type 정의할 수 있음
document
- 색인화 할 수 있는 기본 정보 단위
- JSON 형식
shard
-
색인은 방대한 양의 데이터를 저장할 수 있는데, 이 데이터가 단일 노드의 하드웨어 한도를 초과할 수도 있다.
-
이러한 문제를 해결하고자 index를 이른바 샤드(shard)라는 조각으로 분할하는 기능을 제공
-
index 생성할 때 원하는 샤드 수를 간단히 정의할 수 있음
-
각 샤드는 그 자체가 온전한 기능을 가진 독립적인 index
replica
-
언제든 오류가 일어날 가능성이 있는 네트워크/클라우드 환경에서는 어떤 이유에서든 샤드/노드가 오프라인 상태가 되거나 사라지게 될 경우에 대비하여 Fail-Over 매커니즘을 마련하는 것이 매우 유익하고 바람직
-
Elasticsearch에서는 색인의 샤드에 대해 하나 이상의 복사본을 생성할 수 있는데, 이를 리플리카 샤드(replica shard), 줄여서 리플리카라고 함
각 index는 여러개의 shard로 분할하고, 하나의 index는 replica를 1회 이상 생성할 수 있다.
복제되면 각index는 기본 shard와 replica shard 를 갖게 됨.
- shard, replica수는 index 별로 생성 시 정의할 수 있다.
- index 생성 후 shard 수는 변경 불가. replica는 가능
기본적으로 Elasticsearch의 각 색인은 기본 샤드 5개, 리플리카 1개를 가짐.
장점
- 빠르다. 대기시간이 짧음.
- 여러 컨테이너에 걸쳐 분산되어 처리.
- 광범위한 기능 세트와 함께 제공
- 데이터 수집, 시각화, 보고를 간소화
Reference