엘라스틱서치는 루씬을 기반으로 방대한 양의 데이터를 신속하게 검색할 수 있는 검색엔진이다.
엘라스틱서치는 NRT (Near Rear Time)검색 플랫폼이라는 특징을 가지고 있고, 색인화 하는 시점부터 문서가 검색 가능해지는 시점까지 1초가량 걸리며 거의 실시간에 가까운 속도로 색인된 데이터의검색, 집계가 이루어진다.
RestAPI을 사용함.
인덱스 라이프사이클 - 조건이 충족되면 다음 단계로 이동함.
ex) 5GB이상 or 1day 이상 or index 1천만개 이상 지나면 다음 단계 ( data >ultrawarm )
30일 이상 지나면 cold, 60일 이상이면 delete
1. datanode
- 빠른 검색을 위한 data node
2. ultrawarm node
- IA 검색을 위한 DATA
3. cold
- store node
4. delete
-
ELK, EFK 를 사용함.
Logstash, Fluentd 차이 목적의 차이는 없음. 데이터 수집 시 필터링.
엘라스틱서치 논리적 물리적 구조를 가지고 있다.
1. 논리적 구조
2. 물리적 구조 // 클러스터 > 노드 > 인덱스 > 샤드
인덱스는 기본적으로 샤드라는 단위로 분리되고 각 노드에 분산되어 저장됩니다.
샤드는 위에서 말한 루씬 기반의 단일 검색 인스턴스이며, 이 역시 고가용성을 위해 Primary, Replicas로 복제되어 저장됨.
Primary 샤드, Replicas 샤드는 동일한 데이터는 담고 있으며, 반드시 서로 다른 노드에 저장된다.
엘라스틱 서치의 각 노드의 역할
각 노드가 수행할 수 있는 역할은 다양하게 있다.
config/elasticsearch.yml 에서 설정할 수 있다.
1. node.master // default = true
마스터 후보(master eligible) 노드 여부를 설정합니다. false인 경우 이 노드는 마스터 노드로 선출이 불가능합니다. 모든 클러스터는 1개의 마스터 노드가 존재하며 마스터 노드가 다운되거나 끊어진 경우 남은 마스터 후보 노드들 중에서 새로운 마스터 노드가 선출되게 됩니다.
1-2 Split-Brain 노드
마스터 노드
2. node.data
노드가 데이터를 저장하도록 합니다. false인 경우 이 노드는 데이터를 저장하지 않습니다.
3. node.ingest
데이터 색인시 전처리 작업인 ingest pipleline 작업의 수행을 할 수 있는지 여부를 지정합니다. false인 경우 이 노드에서는 ingest pipeline 작업의 실행이 불가능합니다.
4. node.ml
이 노드가 머신러닝 작업 수행을 할 수 있는지 여부를 지정합니다. false 인 경우 이 노드애서는 머신러닝 작업이 수행되지 않습니다.
'ES' 카테고리의 다른 글
엘라스틱 서치가 검색에 빠른 이유 (3) | 2022.12.17 |
---|---|
엘라스틱서치의 루씬 검색 라이브러리 (0) | 2022.11.22 |