ElasticSearch

ElasticSearch

ElasticSearch란?

- Elastic Stack에서 가장 중요한 역할을 담당하는 풀텍스트 검색 및 분석 오픈소스

- 공식 홈페이지에서는 Elasticsearch는 텍스트, 숫자, 위치 기반 정보, 정형 및 비정형 데이터 등 모든 유형의 데이터를 위한 무료 검색 및 분석 엔진으로 분산형 및 개방형을 특징을 가진 검색 및 오픈소스라고 정의 되어 있다

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

• Elastic Search 구성 및 용어 정리

1) 클러스터( cluseter )

- 클러스터란 Elasticsearch에서 가장 큰 시스템 단위를 의미하며, 최소 하나 이상의 노드로 이루어진 노드들의 집합

- 서로 다른 클러스터는 데이터의 접근, 교환을 할 수 없는 독립적인 시스템으로 유지되며,

여러 대의 서버가 하나의 클러스터를 구성할 수 있고, 한 서버에 여러 개의 클러스터가 존재할수도 있다.

2) 노드( node )

• 하나의 서버를 의미하며 N개의 노드로 클러스터를 구성할 수 있다.

2-1) Master node

- 클러스터를 제어하는 마스터로 선택할 수 있는 노드

• master 노드의 역할

1. 인덱스 생성, 삭제

2. 클러스더 노드들의 추적, 관리

3. 데이터 입력 시 어느 샤드에 할당할 것인지 정해줌

2-2) Data node

- 데이터와 관련된 CRUD 작업과 관련있는 노드

- 해당 노드는 자원을 많이 소모하며, 클러스터는 1개의 마스터노드와 N개의 Data node로 구성될 수 있다.

2-3) Ingest node

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

2-4) Coordination only node

- data node와 Masternode의 일을 대신하는 이 노드는 로드밸런서와 비슷한 역할을 해주는 node로 써대규모 클러스터에서 큰 이점이 있습니다.

3) 인덱스( index ) / 샤드( Shard ) / 복제본( Replica )

3-1) 인덱스(index, indices)

- Elasticsearch에서 index(indices)는 RDBMS에서 database와 대응하는 개념입니다.

- 인덱스 및 인덱시스라고 불리우며

3-2) 샤딩 (sharding)

- Elasticsearch에서 스케일 아웃을 위해 index를 여러 shard로 쪼개어 데이터를 관리하는 방법

- 기본적으로 1개가 존재하며, 검색 성능 향상을 위해 클러스터의 샤드 갯수를 조정하는 튜닝을 하기도 합니다.

3-3) 복제본 (replica)

- replica는 shard가 생성될 때 shard의 복제본이 같이 생성되어 나온 것

- 노드를 손실했을 경우 데이터의 신뢰성을 위해 샤드들을 복제하여 데이터의 신뢰성을 보장한다.

- 따라서 replica는 서로 다른 노드에 존재할 것을 권장

필자가 생각한 Elastic Search 구조

참조 : https://victorydntmd.tistory.com/308

from http://jun0126.tistory.com/62 by ccl(A) rewrite - 2021-07-27 01:00:24