일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 형변환
- HTML
- spring 오류
- docker
- 한글 깨짐
- 자바스크립트
- 쿼리
- spring form
- JSP
- 엑셀
- 자바 리스트
- 데이터베이스
- 엘라스틱서치
- JavaScript
- Java
- 이클립스
- 자바
- Excel
- java 오류
- 도커
- eclipse 설정
- vscode
- 이클립스 설정
- Eclipse
- 인텔리제이
- elasticsearch
- db
- tomcat
- jQuery
- CSS
Archives
- Today
- Total
개발노트
[ElasticSearch] 인덱스(Index) & 샤드(Shard) 본문
반응형
인덱스(Index) 란?
JSON문서가 저장되는 논리적인 공간이다.
= 문서의 모음을 유지하는 논리적 네임스페이스이며, 각 문서는 필드의 모음이고, 필드는 데이터를 포함하는 키-값 쌍입니다. (출처 : 엘라스틱 서치 블로그 https://www.elastic.co/kr/blog/what-is-an-elasticsearch-index )
RDBMS를 이용한 비유를 하자면, 아래의 표와 같다.
ElasticSearch | RDBMS |
인덱스 (index) | 데이터베이스 (database) |
매핑 (mapping) | 스키마 (schema) |
문서 (document) | 행 (row) |
[RDBMS의 경우]
1. 데이터베이스를 생성하여 데이터가 저장되는 논리적인 공간을 생성
2. 스키마를 통해 행(row)의 이름, 데이터유형(number, varchar 등) 등의 데이터베이스 정의
스키마란?
스키마는 데이터베이스를 구성하는 자료 개체, 이들의 성질, 이들 간의 관계, 자료의 조작 및 이들 자료 값들이 갖는 제약조건에 관한 정의를 총칭
3. 각 행(row)에 데이터 입력
[ ElasticSearch의 경우 ]
- 처리 되는 큰 틀을 정리하자면 아래와 같다.
1. 클러스터
2. 인덱스
3. 샤드
4. 키-값 쌍이 있는 문서 (JSON 형태의 문서)
인덱스 (Index)의 역할
인덱스의 설계에 따라 문서의 구조 및 검색 쿼리가 결정된다.
→ 문서가 저장되기 위해서는 반드시 인덱스가 존재해야 한다.
샤드(Shard) 란?
인덱스에 색인되는 문서가 저장(색인)되는 공간이다.
→ 하나의 인덱스는 반드시 하나 이상의 샤드를 가진다.
샤드(Shard) 의 종류
종류 | 역할 |
프라이머리 샤드 | - 문서가 저장되는 원본 샤드 - 색인과 검색 성능에 모두 영향 |
레플리카 샤드 | - 프라이머리 샤드의 복제 샤드 - 검색 성능에 영향 - 프라이머리 샤드에 문제가 발생하면 레플리캬 샤드가 프라이머리 샤드로 승격 |
색인 과정
- 문서가 샤드에 저장이 될때, 프라이머리 샤드에서 문서를 분석하고 토크나이징이 되어 저장이 된 후 레플리카 샤드로 복제된다.
- 색인 과정 중에 분석 과정에 가장 많은 CPU와 메모리를 사용하다 보니, 레플리카 샤드 보다는 프라이머리 샤드의 개수가 색인 성능에 영향이 크다.
샤드(Shard) 설정
number_of_shards : 프라이머리 샤드
number_of_replicas : 레플리샤 샤드
레플리캬의 샤드의 개수는 프라이머리 샤드(number_of_shards) X 레플리캬 샤드( number_of_replicas)
PUT /library/_settings
{
"index" : {
"number_of_shards" : 3,
"number_of_replicas" : 1
}
}
// 프라이머리 샤드 : 3
// 레플리카 샤드 : 3
// 총 인덱스의 샤드 개수는 6개
반응형
'Programming > ElasticSearch' 카테고리의 다른 글
Elastic Stack ( ELK Stack ) (0) | 2024.11.13 |
---|---|
[ElasticSearch] text와 keyword 타입 (0) | 2024.08.06 |
[ElasticSearch] 매핑(Mapping) (0) | 2024.07.12 |
[ElasticSearch] 클러스터(CLUSTER) & 노드(NODE) (0) | 2024.07.10 |
[ElasticSearch] ElasticSearch란? (0) | 2024.07.09 |