Storage
elasticsearch 기본 개념
Prower
2022. 8. 20. 04:36
728x90
반응형
elasticsearch
- 오픈소스 풀텍스트 검색 및 분석 엔진
- 방대한 양의 데이터를 거의 실시간으로 저장, 검색, 분석할 수 있도록 지원하는 검색 엔진
- 복잡한 검색 기능이 포함되어야 하는 어플리케이션에 사용
사용 예시
- 자동완성 검색
- 초성검색
- 부분일치
- 한영 변환
- 오타 검색어 제안
역인덱스
- elasticsearch는 저장, 검색, 분석에 특화된 저장소로 볼 수 있다.
- 특히 방대한 양의 데이터에 대해서 거의 실시간으로 검색이 가능한데 이걸 가능하게 하는게 역인덱스(inverted index) 구조이다.
- 역인덱스: 단어나 숫자 같은 정보에 대한 정보를 분할하여 매핑 정보를 저장하는 구조
- 매핑정보를 통해 해쉬 테이블 방식으로 저장되어 검색하는데 O(1)의 시간이 소요된다.
- elasticsearch는 예시의 문장을 다음과 같이 분할하여 저장한다.
역인덱스 예시
RDB
id text
1 | 오늘은 TIL을 적는다. |
2 | TIL 내용은 elasticsearch |
3 | elasticsearch에 대해 조사한다. |
elasticsearch
token id
TIL | 1,2 |
elasticsearch | 2,3 |
오늘 | 1 |
조사 | 3 |
내용 | 2 |
여기서 text의 각단어에 대한 매핑 정보(id)를 저장하여 검색을 더 빠르게 한다.
구조
ref. https://nidhig631.medium.com/primary-shards-replica-shards-in-elasticsearch-269343324f86
document
- elasticsearch에서 정보가 저장된 기본 단위.
- rdb에서 각 row에 비유할 수 있다.
- json형식으로 key - value 형태로 구성된다.
기본 정보
- document에는 document에 대한 정보를 담고 있는 metadata가 포함되어 있다.
- _index: document가 저장된 index
- _type: document의 유형
- _id: document를 식별하는 고유값
type
- document를 유형별로 모아놓은 집합
- rdb에서 테이블에 비유할수 있다.
index
- elasticsearch의 가장 큰 데이터 단위. document를 모아놓은 집합
- rdb에서 데이터베이스에 비유할 수 있다.
유형
- index는 다음의 두가지 유형으로 분류할 수 있다.
- shard: index의 데이터를 분산하여 저장한 조각
- index 내부에서 document 생성에는 제한이 없으므로 node의 저장 한계 초과할 수도 있다.
- 이런 경우 단일 node에서 수용하지 못하거나 검색 성능에 문제가 발생할 수 있으므로 index의 데이터를 shard로 분산하여 저장
- replicas: shard를 복제한 데이터
- node에 문제가 발생할 경우 백업용으로 사용
- 가용성을 위해 원본 shard와 같은 node에 위치시킬 수 없다.
node
- elasticsearch에서 데이터 저장, 인덱싱 등의 역할을 수행하는 elasticsearch의 인스턴스
- node는 다음의 4가지 유형으로 나뉘어 각 역할을 수행한다.
유형
- data node: 데이터 저장, 검색, 인덱싱 등 데이터 관련 역할
- master node: node 추가, 제거 등 전체 node에 대한 관리 역할
- ingestion node: 데이터를 인덱싱 하기 전 document를 전처리 하는 역할
- machine learning node: 머신러닝 역할 수행
cluster
- elasticsearch 기능을 수행하기 위한 여러개의 node의 집합
- cluster는 최소 한개 이상의 node로 구성되어야 하며, 해당 node는 master node 여야 함
ref.
https://idea-sketch.tistory.com/59#recentComments
728x90
반응형