본문 바로가기
ELK Stack

Elasticsearch

by holy season 2023. 3. 6.
반응형

Elasticsearch

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

- Logstash로부터 받은 데이터를 검색 및 집계를 하여 필요한 관심 있는 정보를 획득

- 루씬 라이브러리(Java에서 개발한 정보 검색용 라이브러리)를 단독으로 사용할 수 있음

- 확장성이 뛰어난 오픈 소스 전체 텍스트 검색 및 분석 엔진

- 대량의 데이터를 신속하고 거의 실시간으로 저장, 검색 및 분석

- 일반적으로 복잡한 검색 기능과 요구 사항이 있는 응용 프로그램을 구동하는 기본 엔진 / 기술

 

특징

Near Realtime(NRT)

 

- 거의 실시간 검색 플랫폼

 

- 문서를 색인할 때부터 검색 기능할 때까지 약간의 대기시간 (일반적으로 1)이 매우 짧음

- 클러스터(Cluster)

 

- 전체 데이터를 함께 보유하고 모든 노드에서 연합 인덱싱 및 검색 기능을 제공하는 하나 이상의 노드 모음

 

- 클러스터는 기본적으로 elasticsearch라는 고유한 이름으로 식별

 

- 어떤 노드가 어느 클러스터에 포함되기 위해서는 이름에 의 해 클러스터의 구성원이 되도록 설정되기 때문에 이 이름은 매우 중요

 

- 클러스터는 하나 이상의 노드가 모인 것이며, 이를 통해 전 체 데이터를 저장하고 모든 노드를 포괄하는 통합 색인화 및 검색 기능을 제공

 

- 클러스터는 고유한 이름으로 식별되는데 기본이름은 elasticsearch

- 노드가 잘못된 클러스터에 포함될 위험이 있으므로 동일한 클러스터 이름을 서로 다른 환경에서 재사용하면 안됨

 

- 클러스터에 하나의 노드만 있는 것은 유효하며 또한 각자 고유한 클러스터 이름을 가진 독립적인 클러스터를 여러개 둘 수 있음

 

노드

- 노드는 클러스터의 일부이며 데이터를 저장하고 클러스터의 인덱싱 및 검색 기능에 참여하는 단일 서버

 

- 단일 클러스터에서 원하는 만큼 노드를 소유 가능

 

- 현재 네트워크에서 실행중인 다른 Elasticsearch 노드가 없는 경우 단일 노드를 시작하면 기본적으로elaticsearch라는 새로운 단일 노드 클러스터가 생성

 

- 노드는 클러스터에 포함된 단일 서버로서 데이터를 저장하 고 클러스터의 색인화 및 검색 기능에 참여

 

- 클러스터처럼 이름으로 식별되는데, 기본이름은 시작 시 노 드에 지정되는 임의 UUID(Universally Unique Identifier)

 

- 기본이름 대신 특정 이름으로 정의 가능

 

- 네트워크의 어떤 서버가 Elasticsearch 클러스터의 어떤 노드 에 해당하는지 식별해야 하기 때문에 노드의 이름은 관리의 목적에서 중요

 

- 노드는 클러스터 이름을 통해 어떤 클러스터의 일부로 구성

 

master-eligible node

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

 

- 인덱스 생성, 삭제

 

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

 

- 데이터 입력 시 어느 샤드에 할당할 것인지

 

Data node

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

 

- 메모리 등 자원을 많이 소모하므로 모니터링이 필요 하며, master 노드와 분리되는 것이 좋음

 

Ingest node

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

 

- Coordination only node

 

- data nodemaster-eligible node의 일을 대신하는 이 노드는 대규모 클러스터에서 큰 이점

 

- 로드밸런서와 비슷한 역할

 

색인(index)

- 색인은 다소 유사한 특성을 갖는 문서의 컬렉션

색인은 이름(모두 소문자여야함)으로 식별되며 이 이름은 색인 작성, 검색, 갱신 및 삭제할 때 색인을 참조하는데 사용

RDB 관점에서 보면 DB에 해당

 

Type

- 다른 종류의 data들을 같은 index에 저장하게 해주는 index 논리적인부분을 의미

 

- 7.x 버전부터 해당 개념이 전체 삭제 -> deprecated

RDB 관점에서 보면 Table에 해당

 

Documments

- 문서는 색인을 생성할 수 있는 기본 정보 단위

JSON으로 표현

 

- RDB 관점에서 Record

 

- 인덱스( index )

 

- RDBMS에서 database와 대응하는 개념

 

샤드( Shard )

- 샤딩( sharding )은 데이터를 분산해서 저장하는 방법

스케일 아웃을 위해 index를 여러 shard로 쪼갠 것

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

 

복제( Replica )

- 또 다른 형태의 shard

노드를 손실했을 경우 데이터의 신뢰성을 위해 샤드들을 복제 하는 것

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

반응형

'ELK Stack' 카테고리의 다른 글

Kibana  (0) 2023.03.06
Logstash  (0) 2023.03.06
ELK Stack  (0) 2023.03.03