[ElasticSearch] 2장. 엘라스틱서치의 구성 요소
ELK Stack 기초 다지기
목차
2. 엘라스틱서치의 구성 요소
1. 논리적 배치
1) 문서 (document)
-
엘라스틱서치는 문서 기반으로 동작한다.
-
색인과 검색하는 데이터의 가장 작은 단위가 된다.
-
특징
- 유연한 계층 구조를 가진다. (Schema-less)
- JSON으로 표현된다.
- 필드를 추가하거나 생략할 수 있지만, 각 필드의 타입은 중요함
2) 타입
-
RDBMS로 비교하면, 문서가 row이고 타입이 table이다.
-
문서에 대한 논리적인 컨테이너이다.
-
각 타입에서 필드는 매핑으로 정의한다.
-
특징
- 새로운 문서가 기존 매피에 존재하지 않는 필드를 포함하면, 해당 필드는 매핑이 자동으로 추가된다.
- 매핑은 타입에서 지금까지 색인한 모든 문서의 모든 필드를 포함한다.
3) 색인 (index)
-
매핑 타입의 컨테이너이다.
-
비슷한 데이터가 담긴 문서들의 집합이다.
-
대문자를 사용할 수 없다고 한다!
2. 물리적 배치
1) 노드
-
노드는 클러스터의 부분이 되는 단일 서버로 데이터를 저장한다.
-
또한, 클러스터에 참여해 색인과 검색 역할을 수행한다.
-
클러스터의 이름을 따로 정의해주지 않으면 elasticsearch라는 이름을 사용해 노드가 구성된다.
아무런 설정 없이 동일 네트워크 상에서 다수의 노드를 시작시키면,
elasticsearch 라는 이름으로 단일 클러스터가 자동으로 구성된다는 의미이다.
2) 샤드 (shard)
-
인덱스는, 인덱스 자체로 단일 노드의 하드웨어 한계까지 정보를 저장할 수 있어야 한다.
-
하지만 데이터가 너무 크다면, 단일 노드에 들어가지 않거나 검색하는 데 시간이 너무 오래 걸릴 수 있다.
-
이를 해결하기 위해 인덱스를 shard라고 하는 파편으로 쪼개서 사용할 수 있다.
-
인덱스를 만들 때 원하는 만큼의 샤드 갯수를 정의해줄 수 있다.
-
중요성
- 데이터를 수평적으로 분할하거나 확장시킬 수 있다.
- 샤드 단위로 분산/병렬처리를 진행해 성능을 높일 수 있다.
3) 복제 (replica)
- 네트워크에서는 언제 장애가 발생할지 알 수 없다.
- 노드/샤드가 언제든지 중단될 수 있다는 의미!
- 이럴 때 대응하기 위해 elasticsearch에서 복제본 (replica)이라고 불리는 샤드의 복제본을 다수 생성할 수 있다.
- 중요성
- 샤드/노드의 장애에 대한 고가용성을 제공한다.
- 검색을 모든 복제본에서 병렬적으로 처리해 검색의 양과 결과를 확장할 수 있다.
- [주의] 색인이 생성되는 시점에 샤드의 수와 레플리카 수를 정의할 수 있지만, 이미 색인이 생성된 이후에는 리플리카 수는 조정 가능하나 샤드 수는 조정할 수 없음!