2023. 5. 6. 22:01ㆍTIL/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
'TIL > ELK Stack' 카테고리의 다른 글
[Elasticsearch] Sharding and scalability (0) | 2023.06.23 |
---|---|
[Elasticsearch] 데이터 입력, 조회, 삭제(GET, POST, PUT, DELETE) (0) | 2023.05.08 |
[ELK Stack] ELK Stack 이란 (0) | 2022.05.12 |