3. Elastic Search 개념 정리
이제부터 정말 중요한 Elastic 개념 정리 들어갑니다.
최소한 여기에 나오는 용어들을 알아야 사용할 수 있습니다.
꼭 집중해주시길 바랍니다(人´∀`).☆.。.:*・°
Cluster (클러스터)
-
하나 이상의 노드(프로세스)로 구성
-
클러스터를 통해 데이터를 적재하고 검색요청 진행
-
클러스터는 고유의 cluster_name, cluster_uuid 갖고 운영
Node (노드)
-
Elastic search 프로세스
-
서로 헬스 체크, 데이터 인덱싱 되어 적재 기능
-
노드 종류
노드 종류 | 노드 역할 |
Master Node (마스터 노드) |
|
Data Node (데이터 노드) |
|
All Node (전체 노드) |
|
Client Node (클라이언트 노드) |
|
Shard (샤드)
-
Lucene의 인덱스 개념과 동일
-
파티션 개념 유사
-
인덱스의 doc 데이터를 나누는 단위
-
샤드가 없다면 생길 문제점
1) 단일 노드의 볼륨 크기의 유한성으로 더이상 저장 못할 때
2) 단일 노드의 유한한 CPU, mem 자원으로 indexing, searching 성능 저하
샤드 종류 | 샤드 역할 |
Primary Shard (기본 샤드) |
|
Replica Shard (복제본 샤드) |
|
Segment (세그먼트)
-
문서(document)가 인덱싱될 때 처음엔 시스템 버퍼 캐시영역으로 적재
-
refresh 수행시 디스크 세그먼트에 적재
-
디스크 세그먼트에 적재되어야 검색가능한(searchable) 데이터로 전환
-
- 세그먼트는 불변의 특성(일관성 유지)을 지님
- 수정 요청 = 기존 문서 삭제 마킹, 새로운 문서 생성
- 삭제 마킹 = 실제 삭제 작업 곧바로 진행 X, 실제 삭제 작업은 머징에 의해 진행
refresh (리프레쉬)
-
버퍼 캐시 영역 → 디스크 세그먼트 적재
-
refresh 주기
-
default(기본 값) :
~6.X 버전 = 1s
7.X 버전 = 1s + 30s동안 검색 요청(select) 없으면 refresh disabled (7.X)
-
merging (머징, 병합)
-
세그먼트는 잘게 쪼개진 데이터 단위이기에 검색 요청 시 많은 세그먼트들에게 응답을 받아야하는 단점 존재
-
백그라운드에서 세그먼트 병합 수행
-
merging 주기
-
시간 단위로 끊기진 않고 샤드 상황을 보고 유동적으로 수행
-
강제 머징(force merging)도 가능
-
'Development - Search Engine > Elastic Search' 카테고리의 다른 글
2. Elastic Search 용어 정리 (0) | 2019.07.15 |
---|---|
1. Elastic Search란? 검색 엔진? 분석 엔진? (0) | 2019.06.28 |