엘라스틱 서치 용어 정리

백현균·2023년 3월 7일
0

1. 엘라스틱서치?

- Apache Lucene기반의 자바 오픈소스기반의 분산 검색엔진
- restAPI를 기본으로 지원하고, 데이터 조회, 입력, 삭제를 HTTP프로토콜을 이용한 restAP로 처리

2. 특징

1. Scale Out

샤드라는 개념을 통해 규모가 수평적으로 늘어날 수 있음

2. 고가용성

레플리카를 통해 데이터의 안전성 및 신뢰성을 보장

3. Restful

데이터의 CRUD작업은 HTTP restfulAPI를 통해 수행
Data CRUDElastic Search Restful
SELECTGET
INSERTPUT
UPDATEPOST
DELETEDELETE

3. 엘라스틱서치 종류

- 루씬(Apache Lucene) 기반의 Full Text로 검색이 가능한 오픈소스 분석 엔진
- Rest API를 이용하여 처리하고, 대량의 데이터를 신속하게 저장, 검색, 분석 가능

2. Logstash

- 플러그인을 이용하여 데이터 집계와 보관, 서버 데이터 처리를 담당
- 파이프라인으로 데이터를 수집해 필터를 통해 변환 후 ElasticSearch로 전송
- Logstash의 데이터 처리: 입력 -> 필터 -> 출력
	- 입력: 데이터 저장소에 데이터를 입력
    - 필터: 데이터 확장, 변경, 필터링, 삭제등 가공 작업
    - 출력: 데이터를 데이터 저장소로 전송

3. Kibana

- Elastic Search의 빠른 검색을 통해 데이터 시각화 및 모니터링
- Elastic Search에 색인된 데이터들을 관리 및 가공할 수 있는 Node.js기반의 관리 도구
- Discover, Visualize, DashBoard 3개의 기본 메뉴와 다양한 App들로 구성 및 플러그인을 통해 설치 가능

4. Beats

- 데이터를 Logstash 혹은 Elastic Search로 전송하는 도구
- Logstash와 비슷한 기능을 가진 경량 로그 수집 파이프라이닝 툴 -> Go언어로 개발됨

4. Elastch Search vs DB

DBElastic Search
Table (테이블)Index (인덱스)
Row (행)Document (문서)
Column (열)Field (필드)
Schema (스키마)Mapping (매핑)

5. Elastic Search 아키텍쳐

Elastic Search의 개념들은 RDBMS에서도 존재하는 개념임

1. 논리적 구조

0) 요약

색인 (Indexing) - 데이터를 검색될 수 있는 구조로 변경하기 위해 원본 문서를 검색어 토큰들로 변환하여 저장하는 과정
검색 (Search) - 인덱스에 들어있는 검색어 토큰들을 포함하고 있는 문서를 찾아가는 과정
질의 (Query) - 사용자가 원하는 문서를 찾거나 집계 결과를 출력하기 위해 사용하는 검색어 혹은 검색 조건

1) Document

- Elastic Search 데이터의 최소 단위
	-> RDBMS의 Row와 유사한 개념

2) Field

- Document에 들어가는 데이터 타입
- RDBMS에서 Column과 유사한 개념이나 보다 동적임
	-> RDBMS에선 하나의 Column이 하나의 데이터 타입만 가질 수 있으나, Elastic Search에서는 하나의 Field는 여러 개의 
       타입을 가질 수 있음

3) Index

- 색인 과정을 거친 결과물 혹은 색인된 데이터가 저장되는 저장소를 의미
	-> RDBMS에서 TABLE과 유사한 개념
- Ealsic Search에서는 Document들의 논리적인 집합을 표현

4) Mapping

- Mapping은 Field와 Field의 속성 및 색인 방법을 정의
- Mapping정보에 여러 가지 데이터 타입 지정이 가능하나, Field의 이름 중복 불가능

2. 물리적 구조

1) Cluster

- Elastic Search에서 가장 큰 시스템 단위를 의미하며 최소 1개 이상의 노드로 이루어진 노드들의 집합
- 서로 다른 클러스터끼리는 데이터 교환, 접근을 할 수 없는 독립적 시스템으로 유지
- 여러 대의 서버가 1개의 클러스터를 구성할 수 있고, 1개의 서버에 여러 개의 클러스터가 존재 할 수 있음

2) Node

- Elastic Search 클러스터에 포함된 단일서버로서 데이터를 저장, 클러스터의 색인화 및 검색 기능에  참여
- 노드는 클러스터처럼 이름으로 식별되고, 특정 노드를 이름으로 정의할 수 있고, 관리 목적에 맞게 정의

3) Shard

- 인덱스내부에는 색인된 데이터들이 존재하는데, 이 데이터들은 하나로 뭉쳐서 존재하지 않고 물리적 공간에 여러 개의 부분들로 
  나눠서 존재하는 것을 의미

4) Segment

- Elastic Search에서 Document의 빠른 검색을 위해 설계된 자료구조
- 각 샤드는 다수의 세그먼트로 구성
- Elastic Search에 데이터를 저장하면, 이것을 메모리에 모아두고, 새로운 세그먼트를 디스크에 기록하여 검색을 Refresh
	-> 이로 인하여 새로운 검색 가능한 세그먼트가 생성됨

5) Replica

- 레플리카 또는 또 다른 형태의 샤드라고 말한다.
- 노드를 손실했을 경우 데이터의 신뢰성을 위해 샤드를 복제한 것
	-> 따라서, 샤드와 레플리카는 서로 다른 노드에 존재하는 것을 권장

업로드중..

0개의 댓글