[ElasticSearch] 기본개념

2020. 6. 27. 12:29

Elasticsearch는 아파치 루씬(Apache Lucene)기반의 JAVA 오픈소스 분산 검색엔진

검색을 위해 단독으로 사용되기도 하며, ELK(Elasticsearch / Logstash / Kibana)  스택으로 사용되기도 함

Logstash 

- 다양한 소스의 로그 또는 데이터를 수집, 집계, 파싱해서 Elasticsearch로 전달

Elasticsearch

- Logstash가 준 데이터를 검색 및 집계하여 필요한 정보 획득

Kibana

- Elasticsearch의 집계된 정보를 시각화 및 모니터링

 

 

Elasticsearch 용어
  • 클러스터 ( cluseter) 
Elasticsearch에서 가장 큰 시스템 단위
최소 하나 이상의 노드로 이루어진 '노드'들의 집합
서로 다른 클러스터끼리는 데이터의 접근과 교환을 할 수 없는 독립 시스템 유지
여러 대의 서버가 하나의 클러스터를 구성할 수도 있고 한 서버에 여러 클러스터를 구성할 수도 있음
  • 노드
Elasticsearch를 구성하는 하나의 단위 프로세스
종류
 - master-eligible node
클러스터를 제어하는 마스터로 선택할 수 있는 노드
master 노드의 역할은 인덱스 생성or삭제, 클러스터 노드들의 추적과 관리, 데이터 입력 시 어느 샤드에 할당할 지

- Data node 
데이터와 관련된 CRUD작업을 하는 노드
Data node는 CPU와 메모리 등 자원을 많이 소모하므로 모니터닝이 필요하며, master 노드와 분리되는 것이 좋음

- Ingest node
데이터를 변환하는 등 전처리 파이프라인을 실행하는 역할

- Coordination only node
data node와 master-eligible node의 일을 대신하는 노드
대규모 클러스터에 이점이 있음, 로드 밸런서와 비슷한 역할
  • 인덱스(index), 샤드(Shard), 복제(Replica)
- 인덱스
RDBMS의 인덱스와 비슷한 개념

-샤딩(Sharding)
데이터를 분산해서 저장하는 방법
즉, Elasticsearch에서 스케일 아웃을 위해 인덱스를 여러 샤드로 쪼갠 것
기본적으로 1개가 존재하며, 검색 성능 향상을 위해 클러스터의 샤드 개수를 조정하는 튜닝을 함

- 복제(Replica)
또 다른 형태의 샤드
노드를 손실했을 경우 데이터의 신뢰성을 위해 샤드들을 복제
따라서 복제는 서로 다른 노드에 존재할 것을 권장

 

Elasticsearch의 특징
  • Salce out : 샤드를 통해 규모가 수평적으로 늘어날 수 있음
  • 고가용성 : 복제를 통해 데이터의 안정성 보장
  • Schema Free : Json 문서를 통해 검색을 수행해 스키마 개념이 없음
  • Restful : CRUD작업은 Http Restful API를 통해 수행
Data CRUD Elasticsearch Restful
SELECT -> GET  
INSERT ->  POST
UPDATE -> PUT 
DELETE -> DELETE

 

역색인(Elasticsearch가 빠른 이유)

index(색인)와 inverted index(역색인)의 차이

색인은 책의 맨 앞에 목차

역색인은 책의 맨 뒤에 키워드 별 페이지(찾아보기)

 

Elasticsearch는 텍스트를 파싱해서 검색어 사전을 만든 다음, 역색인 방식으로 텍스트를 저장함

 

'ELK STACK > ElasticSearch' 카테고리의 다른 글

[Elasticsearch] 설치 및 시작  (0) 2020.06.28

BELATED ARTICLES

more