🧐 🤔 그거 어떻게 쓰더라 🙄 😙

엘라스틱 스택 세미나 자료

2023. 5. 8. Evergood Kim이가 씀

엘라스틱세미나.pptx
0.24MB

※ 작성자는 엘라스틱 스택 숙련자가 아니며 오히려 초보입니다.

검색용 글 복붙

엘라스틱 스택 소개

김영선

제작일: 2024. 04. 24.

마지막 수정일: 2024. 04. 25.

엘라스틱 스택

엘라스틱서치

클러스터

엘라스틱 스택

엘라스틱 스택

히스토리

엘라스틱의 서비스

엘라스틱 스택의 구성요소들

Elastic Stack

빅데이터를 위한 플랫폼

엘라스틱 스택

빅데이터를 위한 플랫폼

검색 서비스, 로그 통합 분석 등에 쓰일 수 있다.

오픈소스에서 시작되었다.

히스토리

Apache Lucene기반 검색엔진인 엘라스틱서치 등장.

데이터 수집기인 로그스태시, 시각화 UI인 키바나를 더하고,
이 셋의 머리글자를 따서 ELK 스택이라 불렀다.

이후 경량 데이터 수집기인 비츠를 더하며 엘라스틱 스택Elastic Stack으로 이름을 바꾸었다.

이후로도 활발히 업데이트 되어 다양한 구성요소들이 추가되었다.

엘라스틱 스택의 구성요소들

Ingest: 데이터 수집·가공

Store: 데이터 저장(인덱싱, 검색, 분석)

Consume: 데이터에 액세스

https://www.elastic.co/guide/en/welcome-to-elastic/8.7/stack-components.html

엘라스틱 스택의 구성요소들

엘라스틱서치Elasticsearch

엘라스틱 스택의 핵심. 데이터가 저장되는 곳.

키바나Kibana

엘라스틱서치와 연동하여 데이터를 관리·분석·시각화 한다.

로그스태시Logstash

데이터 집계·변환·전달

비츠Beats

경량 데이터 수집기. 오픈소스이다. 용도별로 다양한 종류가 있다.

Fleet & Elastic Agent

Elastic Agent: 로컬·원격 호스트의 데이터를 통합된 방법으로 모니터링한다.

Fleet: Elastic Agent들을 중앙적으로 관리한다.

통합integrations

외부 서비스의 데이터를 엘라스틱 스택에 연결하는 간소화된 방법.

각 통합은 엘라스틱 에이전트에 의해 구동된다.

엘라스틱서치 클라이언트Elasticsearch Clients

엘라스틱서치에 대한 API 요청 및 응답을 관리하는 메커니즘을 제공한다.

자바, 자바스크립트, 파이썬, 루비 등 다양한 언어로 제공된다.

엘라스틱의 서비스

현재 엘라스틱에서는 엘라스틱 스택을 기반으로 한 세 가지 솔루션을 제공한다.

Enterprise Search

Observability

Security

엘라스틱 스택의 구성요소나 커스텀 요소들을 결합하여 자체 솔루션을 개발할 수 있다.

클라우드에 엘라스틱 앱을 생성·배포·관리하는 엘라스틱 클라우드 서비스가 있다.

엘라스틱서치

엘라스틱서치

도큐먼트

인덱스

역인덱싱

쿼리

Elasticsearch

엘라스틱 스택의 핵심이 되는 검색엔진.

엘라스틱서치Elasticsearch

루씬Lucene을 기반으로 한 검색엔진.

엘라스틱 스택의 핵심 구성요소.

자료를 저장하고, 쿼리에 맞는 결과를 반환하는 점에서 DB와 비교되곤 한다.

아래 비교는 DB에 익숙한 사용자들에게 엘라스틱서치의 낯선 개념을 비교적 쉽게 설명하고자 하는 것이고 둘이 완전히 같은 개념이 아니다.

도큐먼트document

엘라스틱서치에서 데이터가 저장되는 기본 단위.

JSON 형식.

인덱스index

도큐먼트들을 저장하는 논리적 단위

일반적으로 스키마에 따라 인덱스를 구분한다.

한 인덱스에 데이터가 많이 쌓일 수록 성능이 저하되며, 데이터가 커질 경우 대개 인덱스를 분리한다. 시계열 데이터의 경우 몇 달·년 주기로 인덱스를 나눈다.

데이터 스트림data stream

여러 인덱스에 나눠 저장하는 시계열 데이터에 접근하기 위한 단일 이름을 제공한다.

https://www.elastic.co/guide/en/elasticsearch/reference/8.7/data-streams.html

매핑mapping

매핑

도큐먼트와 그 필드들이 저장되는 방식을 정의한다.

DB의 스키마와 달리 유연하다.

동적 매핑

엘라스틱서치가 자동으로 매핑한다. 동적 매핑은 정수를 long으로만 매핑하는 등 비효율적일 수도 있다.

기존 인덱스에 없던 필드가 추가되면 자동으로 동적 매핑 된다.

명시적 매핑

사용자가 매핑을 직접 설정한다.

인덱스 생성시 지정하거나 생성 후에 API를 통해 변경할 수 있다.

https://www.elastic.co/guide/en/elasticsearch/reference/8.7/mapping.html, 책 99

매핑 타입

문자열

text: 전문 검색이 필요한 데이터. 분석기에게 분석되어 작은 단위로 분리된다.

keyword: 원문을 통째로 인덱싱한다. 주로 정렬이나 집계에 쓰인다. (예: 성별)

날짜

date

정수

byte, short, integer, long

실수

scaled_float, half_float, double, float

범위

integer_range, float_range, date_range 등

그외

불린, ip주소, 위치정보, 중첩 등

https://www.elastic.co/guide/en/elasticsearch/reference/8.7/mapping.html, 책 99

역인덱싱inverted indexing

역인덱싱: 문자열을 토큰화하여 인덱스화한다.

엘라스틱 서치는 역인덱싱 기술을 사용하여 전문full-text 검색을 지원한다.

전문을 용어term 단위로 분석해 인덱싱해두고 이를 기반으로 검색한다.

책125

REST API, 쿼리

REST API를 통해 엘라스틱서치의 기능을 이용한다.

쿼리 DSL: 엘라스틱서치 전용 쿼리문.

클러스터

클러스터

노드

샤드

엘라스틱서치 분산처리

클러스터Cluster

클러스터: 한 시스템으로 동작하도록 여러 컴퓨터를 연결한 것.

엘라스틱서치는 분산 처리를 지원하여 빅데이터 처리에 이용하기 좋다.

노드를 추가하여 클러스터를 수평적으로 확장하기 쉽다.

https://www.elastic.co/guide/en/elasticsearch/reference/8.7/scalability.html

노드Node

노드는 엘라스틱서치가 설치된 물리적/논리적 단위이다.

연결된 노드들의 모음이 바로 클러스터이다.

전송 모듈을 통해 클러스터 내부에서 노드들끼리 통신하고,
HTTP 모듈을 통해 외부와 통신한다.(API 요청·응답)

https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-node.html

노드 종류

노드는 역할에 따라 업무가 달라진다. 한 노드가 여러 역할을 할 수도 있다.

마스터Master 노드

한 클러스터 안에 반드시 마스터 노드가 한 개 있다.

클러스터의 모든 상태 정보를 관리한다.

마스터 노드가 없는 경우 클러스터가 멈춘다.

마스터 노드는 마스터 후보 노드들 중 자동으로 투표를 통해 선출된다.

데이터data 노드

인덱싱한 도큐먼트를 저장하여 데이터 CRUD 작업, 검색, 집계 작업 수행.

인제스트ingest 노드

도큐먼트가 인덱싱 되기 전, 인제스트 파이프라인을 적용하여 가공한다.

등등…

https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-node.html

핫hot/웜warm/콜드cold 노드

자주 사용하는 노드에 더 좋은 리소스를 할당하여 클러스터의 효율을 높인다.

샤드Shard

데이터를 저장하는 단위.

인덱스는 가상의 논리적 단위이며 실제 인덱싱 및 검색은 샤드에서 일어난다.

데이터 유실을 방지하고 가용성을 확보하기 위해 복제본을 만든다.

프라이머리 샤드: 데이터의 원본

레플리카 샤드: 복제본

728x90