시뻘건 개발 도전기

엘라스틱서치 용어 본문

Reading/엘라스틱서치 실무 가이드

엘라스틱서치 용어

시뻘건볼때기 2023. 12. 1. 21:35
반응형

엘라스틱서치의 기본 용어

엘라스틱서치의 데이터는 [그림 1]과 같이 인덱스, 타입, 문서, 필드 구조로 구성된다.

[그림 1] 데이터의 구조

 

인덱스

인덱스는 데이터를 저장하는 공간이다. 하나의 인덱스는 하나의 타입만 가지며 하나의 물리적인 노드에 여러 개의 논리적인 인덱스를 생성할 수 있다. 엘라스틱서치는 인덱스 생성 시 기본적으로 5개의 프라이머리 샤드와 1개의 레플리카 샤드 세트를 생성한다. 각각의 샤드 수는 인덱스를 생성할 때 옵션을 이용해 변경할 수 있다. 인덱스의 이름은 모두 소문자여야한다. 만약 인덱스가 없는 상태에서 데이터가 추가된다면 데이터를 이용해 인덱스가 자동으로 생성된다.

샤드

색인된 문서는 하나의 인덱스에 담긴다. 인덱스 내부에 색인된 데이터는 물리적인 공간에 여러 개의 파티션으로 나뉘어 구성되는데, 이 파티션을 엘라스틱서치에서는 샤드라고 부른다. 다수의 샤드로 문서를 분산 저장하고 있어 데이터 손실 위험을 최소화한다.

타입

타입은 인덱스의 논리적 구조를 의미하며 속성에 따라 분류하기도한다. 엘라스틱서치 6.1버전 부터 인덱스당 하나의 타입만 사용할 수 있다. (타입을  사용하는 것을 권장하지 않는다고 하더랍니다.)

문서

엘라스틱서치에서 데이터가 저장되는 최소 단위다. 기본적으로 지금까지 봐오고 실습했던 json 형식으로 데이터가 저장된다. 문서는 중첩 구조를 지원하기 때문에 이를 이용해 문서 안에 문서를 지정하는 것도 가능하다.

필드

문서를 구성하기 위한 속성이다. 하나의 필드는 목적에 따라 다수의 데이터 타입을 가질 수 있다.

매핑

문서의 필드와 필드의 속성을 정의하고 그에 따른 색인 방법을 정의하는 프로세스다. 인덱스의 매핑 정보에는 여러가지 데이터 타입을 지정할 수 있지만 필드명은 중복해서 사용할 수 없다. 

 

노드의 종류

클러스터는 모든 노드의 검색과 색인 작업을 관장한다. 분산처리를 위해서는 다양한 형태의 노드들을 조합해서 클러스터를 구성해야한다. 기본적으로 마스터 노드가 전체적인 클러스터를 관리하고 데이터 노드가 실제 데이터를 관리한다. elasticsearch는 각 설정에 따라 4가지의 노드 형태를 제공한다.

  1. 마스터 노드
    • 클러스터를 관리한다.
    • 노드 추가와 제거같은 클러스터의 전반적인 관리를 담당한다
    • 네트워크 속도가 빠르고 지연이 없는 노드로 선정해야한다.
  2. 데이터 노드
    • 데이터를 저장한다.
    • 검색과 통계 같은 데이터 관련 작업을 수행한다.
    • 색인 작업은 리소스 모니터링이 필요하다.
  3. 코디네이팅 노드
    • 사용자의 요청만 받아서 처리한다.
    • 클러스터 관련 요청은 마스터 노드에 전달하고 데이터 관련 요청은 데이터 노드에 전달한다.
  4. 인제스트 노드
    • 문서의 전처리 작업을 담당한다.
    • 인덱스 생성 전 문서의 형식을 다양하게 변경할 수 있다.

 

클러스터/노드/샤드

[그림 2]와 같이 하나의 elasticsearch cluster에 노드#1, 노드#2로 총 2개의 물리적 노드가 존재한다고 가정하자. 엘라스틱서치 클러스터는 인덱스의 문서를 조회할 때 마스터 노드를 통해 2개의 노드를 모두 조회해서 각 데이터를 취합한 후 결과를 하나로 합쳐서 제공한다. 클러스터 이름을 구분하여 여러 클러스터를 연결하여 구성할 수도 있다. 또한 노드는 실시간으로 추가/제거가 가능하기 때문에 가용성/확장성 측면에서 매우 유연하다.

[그림 2] 클러스터와 노드

 

3개의 노드로 구성된 클러스터가 있다고 해보자.

[그림 3]  프라이머리 샤드 3개, 레플리카 샤드 0개

 

[그림 4]  프라이머리 샤드 6개, 레플리카 샤드 0개
[그림 5]  프라이머리 샤드 3개, 레플리카 샤드 3개

 

 

[그림 3]을 보았을 때 인덱스는 starwars이며 노드는 3개다. 우측의 숫자 박스가 샤드다. 프라이머리 샤드의 복제본이 존재하다면 물리적인 노드 하나가 죽더라도 나머지 노드 2개가 전체 데이터를 복구할 수 있다.

반응형

'Reading > 엘라스틱서치 실무 가이드' 카테고리의 다른 글

데이터 모델링: 맵핑 api  (2) 2023.12.05
엘라스틱서치 api  (1) 2023.12.04
키바나 설치  (0) 2023.12.01
Elasticsearch 환경 구축  (2) 2023.12.01
검색 시스템 이해하기  (2) 2023.12.01
Comments