[Elasticsearch] Elasticsearch의 기본 개념

2023. 5. 6. 22:01TIL/ELK Stack

Elasticsearch란?


Apache Lucene 기반의 분산 검색 엔진 오픈소스이다. Elasticsearch는 다음과 같은 특징들이 있다.

오픈소스(open source)

Elasticsearch의 핵심 기능들은 Apache 2.0 라이센스로 배포되고 있고 Elastic github repository에서 소스들을 찾을 수 있다.

실시간 분석(real-time)

Elasticsearch의 가장 큰 특징 중 하나이다. Elasticsearch는 배치 기반의 분석 시스템인 하둡(Hadoop)과 달리 Elasticsearch 클러스터가 실행되고 있는 동안에는 계속해서 데이터가 입력되고, 동시에 거의 실시간 속도로 색인(index)된 데이터의 검색, 집계가 가능하다.

전문(full text) 검색 엔진

Lucene은 기본적으로 역파일 색인(inverted file index)라는 구조로 데이터를 저장한다. 마찬가지로 Elasticsearch도 색인된 모든 데이터를 역파일 색인 구조로 저장하여 가공된 텍스트를 검색한다. 이것을 전문 검색(full text)라고 한다.

역파일 색인이란, 전공책 뒤에 색인(index)부분이 있듯, 색인의 키워드를 통해 문서를 찾아내는 방식이다.

1. 문서가 정의된다.

Document Content
doc1 null pointer exception
doc2 Exception cases
doc3 in some exception cases

2. 내용에서 토큰을 분리하고 추출한다(분석기에 따라 소문자로 변환하기도 한다네요).

Document Token Set
doc1 null, pointer, exception
doc2 exception, cases
doc3 in, some, exception, cases

3. 토큰 수(빈도)를 카운트하고 정렬한다.

Token Count
cases 2
exception 3
in 1
null 1
pointer 1
some 1

4. 토큰별 역색인 벡터를 만든다.

Token Count Document
cases 2 doc2, doc3
exception 3 doc1, doc2, doc3
in 1 doc3
null 1 doc1
pointer 1 doc1
some 1 doc3

RESTFul API

Elasticsearch는 REST API를 기본으로 지원하며 모든 데이터 조회, 입력, 삭제를 http 프로토콜을 통해 REST API로 처리한다.

멀티테넌시(multitenancy)

Elasticsearch의 데이터들은 인덱스(index)라는 논리적인 집합 단위로 구성되며 서로 다른 저장소에 분산되어 저장된다. 서로 다른 인덱스들을 별도의 커넥션 없이 하나의 질의로 묶어서 검색하고, 검색 결과들을 하나의 출력으로 도출할 수 있다. 이것을 멀티테넌시(multitenancy)라고 한다.

Elasticsearch vs RDB


용어 비교

Elasticsearch RDB
인덱스(index) 데이터베이스(database)
샤드(shard) 파티션(partition)
타입(type) 테이블(table)
문서(document) 행(row)
필드(field) 열(column)
매핑(mapping) 스키마(schema)
Query DSL SQL

 

Elasticsearch를 REST API를 사용하여 RDB와 관계

Elasticsearch RDB CRUD
GET SELECT READ
PUT UPDATE UPDATE
POST INSERT CREATE
DELETE DELETE DELETE

 

Elasticsearch 기본 용어


클러스터(Cluster)

클러스터는 하나 이상의 노드(서버)가 모인 것.

 

노드(Node)

노드는 클러스터에 포함된 단일 서버. 데이터 저장, 클러스터 색인화 및 검색 기능을 한다.

 

인덱스(Index)

RDBMS에서 database와 대응되는 개념. 비슷한 특성의 문서의 모음이다.

 

타입(Type)

인덱스를 논리적으로 구분한 것. RDBMS에서 table의 개념과 대응된다.

 

도큐먼트(Node)

색인화 할 수 있는 기본 정보 단위. RDBMS에서 row의 개념과 대응된다.

 

샤드 / 레플리카(Shard / Replica)

- 샤드(shard) : 데이터를 분산해서 저장하는 방법. 즉, 인덱스를 여러 샤드로 쪼갠 것.

- 레플리카(Replica) : 노드를 손실했을 경우 데이터 신뢰성을 위해 샤드를 복제한 것.

 

출처
https://esbook.kimjmin.net/
https://velog.io/@yundleyundle/ElasticSearch-%EA%B0%9C%EB%85%90%EC%9D%84-%EC%9D%B5%ED%98%80%EB%B3%B4%EC%9E%90
https://the-dev.tistory.com/30
 

Elastic 가이드 북 - Elastic 가이드북

7. 인덱스 설정과 매핑 - Settings & Mappings

esbook.kimjmin.net

 

ElasticSearch 개념을 익혀보자..

토이 프로젝트를 준비하면서 엘라스틱서치를 사용해야하는 상황이 발생했습니다. CQRS를 참고하면서 개발하면서 Query 즉, Select하는 부분에 ElasticSearch를 선택하여 역색인 지원을 통한 매우 빠른

velog.io

 

[데이터 색인] 역색인 구조 (역 인덱스; Inverted Index)

안녕하세요. 개발개입니다. 이번 글에서는 검색엔진 분야에서 주목받고 있는 엘라스틱서치의 주요 특징 중 하나인 역색인 구조란 무엇인지에 대해 알아보겠습니다. 오타, 오류 혹은 기타 의견

the-dev.tistory.com

반응형