Elasticsearch

[Elastic search] 2) 주요 용어 및 개념 정리

Alex, Yoon 2022. 2. 19. 17:05

Elasticsearch 중요 용어

Elasticsearch
관계형 데이터베이스(RDMS)
인덱스(Index)
테이블(Table)
샤드(Shard)
파티션(Partition)
문서(Document)
행(Row)
필드(Field)
열(Column)
매핑(Mapping)
스키마(Schema)
Query DSL or KQL
SQL
  • 색인(indexing)
    데이터를 검색될 수 있는 구조로 변경하기 위해 원본 문서를 검색어 토큰들로 변환하여 저장하는 일련의 과정. = 색인, 색 과정
  • 인덱스(index, indices)
    색인 과정을 거친 결과물 or 색인된 데이터가 저장되는 저장소
    ES에서는 도큐먼트들의 논리적인 집합을 표현하는 단위
  • 검색(search)
    인덱스에 들어있는 검색어 토큰들을 포함하고 있는 문서를 찾아가는 과정
  • 질의(query)
    사용자가 원하는 문서를 찾거나 집계 결과를 출력하기 위해 사용하는 검색어 or 검색 조건
  • 샤드(shard)
    1. Index 내부에 색인된 데이터는 물리적인 공간에 여러 개의 파티션으로 나뉘어 구성되는데, 이 파티션을 Elasticsearch에서 Shard(샤드)라고 명명함
    2. Elasticsearch는 다수의 Shard로 데이터를 저장하고 있어 데이터 손실 위험을 최소화 하며 검색 속도를 높임

 

역색인

1. Lucene은 기본적으로 역파일 색인(inverted file index) 구조로 데이터를 저장하며 이를 사용하는 ES 또한 동일한 방식으로 저장하여 텍스트를 검색한다. 이런 특성을 Full text search라고 한다.

2. 내부적으로 역파일 색인일지라도 사용자 관점에서는 JSON 형식으로 데이터를 전달한다. 질의에 사용되는 쿼리문이나 쿼리에 대한 결과도 모두 JSON 형식으로 전달/반환된다.

3. key-value 형식이 아닌 문서 기반으로 되어 있으므로 복합적인 정보를 포함해도 그대로 저장이 가능하여 직관적이다.


역색인 구조 예시 

'텍스트 마이닝' 이라는 단어가 1,2,5번 문서에 포함되어 있구나, '이미지 유사도'라는 단어가 3,5,8번 문서에 위치해 있구나 기록. -> 역색인과정
역인덱스가 가리키는 id(문서 위치)를 기록하는 것이므로 큰 속도 저하가 일어나지 않음.

 

RDBMS 

Elastic Search 


인덱스와 도큐먼트

문서 (Document)

  1. Elasticsearch에서 데이터가 저장되는 최소 단위
  2. 기본적으로 JSON 포맷으로 데이터가 저장됨

필드 (Field)

  1. Document를 구성하는 속성
  2. RDBMS에 비해 Elasticsearch에서의 Field는 동적인 데이터 타입이며 목적에 따라 다수의 데이터 타입을 가질 수 있음

매핑 (Mapping)

  1. document의 Field에 대한 data type을 정의하고 저장 방법을 정의하는 프로세스

인덱스와 샤드 

인덱스 : 도큐먼트를 모아놓은 집합 (데이터 저장 단위인 인덱스는 인디시즈indices라고 표현하기도 한다.)

샤드 : 인덱스가 분리되는 단위, 루씬의 단일 검색 인스턴스. 테이블의 파티션의 개념과 유사. 

복습: 데이터를 ES레 저장하는 행위는 색인, 도큐먼트의 집합 단위는 인덱스라고 칭한다.

인덱스는 샤드 단위로 분리되고 각 노드에 분산되어 저장된다. 하나의 인덱스가 5개의 샤드로 저장된 경우 다음과 같다.

샤드 중요 특징 

샤드는 Primary shard 와 Replica shard 로 나뉜다.

말그대로 프라이머리 샤드는 '원조'라고 보면 되고 레플리카 샤드는 원조에서 복사해낸 '복사본'이라 생각하면 된다. 

  1. Elasticsearch 내부적으로 Primary Shard와 Replica Shard는 같은 노드에 있지 않음
  2. Replica Shard끼리도 같은 노드에 할당되지 않음
    • 할당 되지 않은 Replica Shard가 있을 시 Elasticsearch의 Health는 Yellow
    • 할당 되지 않은 Primary Shard가 있을 시 ElasticsearchHealthRed

즉, 0번 샤드 기준으로 표현해보자면 다음과 같다. 

 

1. 이처럼 여러 노드에 인덱스를 나눈 샤드를 '복사'하는 이유는 데이터의 안정성 때문이다. 

2. 주로 엘라스틱 서치는 클러스터로 구성을 하게 된다.

3. 만약 한대의 서버(노드)의 전원이 꺼지게 된다면, 다른 서버(노드)에 복사되어 있던 샤드(데이터 조각)를 살려(Primary Shard로 대신 사용) 데이터가 누락되는 사고를 막는다. 

 

반응형