Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- Elasticsearch
- 스프링
- 오일러프로젝트
- Docker
- JPA
- gcp
- Kafka
- Spring Boot
- 백준
- 코드업
- VPC
- springboot
- 쿠버네티스
- Spring
- aws
- 인천여행
- 클라우드 컴퓨팅
- 클라우드
- 로드밸런서
- 스프링 부트
- 백트래킹
- 카프카
- DFS
- Spring Data JPA
- 자료구조
- 스프링부트
- 프로그래밍문제
- Apache Kafka
- 알고리즘
- 월미도
Archives
- Today
- Total
GW LABS
기초부터 다지는 ElasticSearch 운영 노하우 (3) - ElasticSearch 기본 개념 본문
Book-Review/Programing
기초부터 다지는 ElasticSearch 운영 노하우 (3) - ElasticSearch 기본 개념
GeonWoo Kim 2022. 8. 24. 11:484.1 클러스터와 노드의 개념
- 클러스터: ElasticSearch 프로세스들을 논리적으로 결합하여 하나의 ElasticSearch 프로세스처럼 사용할 수 있게 해주는 기술
- name: 노드의 이름
- cluster_name: 클러스터의 이름
- cluster_uuid: 클러스터의 UUID. 클러스터의 속한 모든 노드가 동일 값을 갖는다.
- 노드: 하나하나의 ElasticSearch 프로세스
- 마스터: 클러스터의 메타데이터 관리. 마스터 노드는 클러스터에서 한 대이다. 마스터 노드의 역할을 할 수 있는 노드가 있지만 실제 마스터 노드는 한 대이다.
- 데이터: 사용자의 문서를 저장
- 인제스트: 사용자의 문서가 저장되기 전 문서 내용을 사전처리
- 코디네이트: 사용자의 요청을 데이터 노드로 전달하고, 데이터 노드로부터 결과를 취합
4.2 인덱스와 타입
- 인덱스: 사용자의 데이터가 저장되는 논리적인 공간
- 인덱스의 이름은 클러스터 내에서 유일해야 한다.
- 타입: 인덱스안의 데이터를 유형별로 논리적으로 나눠 놓은 공간
- 6.x 버전 이후로는 인덱스의 타입은 1개만 지원한다.
- 이번 버전에서는 인덱스에 존재하는 서로 다른 타입에서 동일한 이름의 JSON 문서 필드를 만들 수 있었는데, 여기에서 의도치 않은 검색 결과가 나타나는 문제가 발생했다.
- 6.x 버전 이후로는 인덱스의 타입은 1개만 지원한다.
4.3 샤드와 세그먼트
- 샤드: 인덱스에 색인되는 문서들이 저장되는 논리적인 공간
- 샤드는 프라이머리/레플리카 구조를 통해서 가용성을 확보한다.
- 최초 인덱스 생성시 프라이머리 샤드 개수를 신중하게 설정해야 한다.
- 세그먼트: 샤드의 데이터들을 가지고 있는 물리적인 파일
- 세그먼트는 기존에 기록한 데이터를 업데이트 하지 않는다.
- CRUD 작업시 관련 내용을 모두 파일에 기록한다.
- Delete는 불용처리 하기 때문에 실제 데이터는 세그먼트에 남아있다.
- 세그먼트 병합: 불용처리된 문서를 빼고 사용할 세그먼트만 병합하는 백그라운드 작업
- 여기에서 불용처리된 세그먼트들이 실제로 삭제된다.
- 세그먼트는 기존에 기록한 데이터를 업데이트 하지 않는다.
4.4 프라이머리 샤드와 레플리카 샤드
- 프라이머리 샤드
- 인덱스를 만들 때 필수적으로 프라이머리 샤드의 개수를 설정해야 함
- 기본 값으로 5개의 프라이머리 샤드가 설정
- 프라이머리 샤드 번호 = Hash(문서의 id) % 프라이머리 샤드 개수
- 인덱스를 만들 때 필수적으로 프라이머리 샤드의 개수를 설정해야 함
- 레플리카 샤드
- 프라이머리 샤드와 겹쳐지지 않도록 노드에 분배
- 장애 발생시에 프라이머리 샤드로 승격되고 새로운 레플리카를 생성
- 기본 설정은 프라이머리 샤드 하나당 레플리카 샤드 하나
# 인덱스 당 샤드 개수 설정
curl -X PUT "localhost:9200/shard_index?pretty -d
{
"index.number_of_shards" : 5
}
# 인덱스 샤드 세팅 조회
curl -X GET "localhost:9200/shard_index/_settings?pretty -d
4.5 매핑
- 매핑: ElasticSearch에 저장될 JSON 문서들이 어떤 키와 어떤 형태의 값을 가지고 있는 지 정의한 것
- 미리 정의하는 것을 정적 매핑, 최초 색인된 문서를 바탕으로 자동 생성하는 것을 동적 매핑이라고 한다.
# 매핑조회
curl -X GET "localhost:9200/firstidex/_mapping?pretty
'Book-Review > Programing' 카테고리의 다른 글
기초부터 다지는 ElasticSearch 운영 노하우 (5) - 클러스터 운영하기 (0) | 2022.08.27 |
---|---|
기초부터 다지는 ElasticSearch 운영 노하우 (4) - 클러스터 구축하기 (0) | 2022.08.25 |
기초부터 다지는 ElasticSearch 운영 노하우 (2) - ElasticSearch 기본 동작 (0) | 2022.08.23 |
기초부터 다지는 ElasticSearch 운영 노하우 (1) - ElasticSearch 훑어보기 (0) | 2022.08.23 |
스프링 부트 핵심 가이드 (10) - 서비스의 인증과 권한 부여 (0) | 2022.08.20 |
Comments