[Elasticsearch] elasticsearch의 기본 개념
References
https://jaemunbro.medium.com/elastic-search-기초-스터디-ff01870094f0
https://victorydntmd.tistory.com/308
https://ko.wikipedia.org/wiki/일래스틱서치
개요
Elasticsearch는 Apache Lucene 기반 Java 분산 오픈 소스 검색 엔진으로, 대규모 / 실시간 / 전문(全文) 검색에 이점으로 둔다.
특징
Elasticsearch에는 다음과 같은 특징들이 있다.
Scale out
shard를 통해 규모가 수평적으로 늘어날 수 있다.
※ shard: index 내부를 구성하는 기본적인 단위
고가용성
replica를 통해 데이터의 안정성을 보장한다.
※ replica: shard의 복제본
Schema Free
JSON 문서를 통해 데이터 검색을 수행해 schema적 개념이 없다.
Restful
데이터의 CRUD 작업을 RESTful API로 수행한다.
Data CRUD Elasticsearch Restful
SELECT | GET |
INSERT | PUT |
UPDATE | POST |
DELETE | DELETE |
구조
Elasticsearch는 검색을 위해 단독으로 사용되기도 하지만 ELK(Elasticsearch, Logstash, Kibana) 스택으로 사용한다.
Logstash
DB나 CSV파일 같은 다양한 소스 로그 또는 트랜잭션 데이터를 수집 / 집계 / 파싱하여 Elasticsearch로 전달한다.
Elasticsearch
Logstash로 부터 받은 데이터를 검색 및 집계 후 필요한 정보들을 획득한다.
Kibana
Elasticsearch의 빠른 검색을 통해 데이터를 시각화 및 모니터링 한다.
Elasticsearch와 역색인(Inverted Index)
Elasticsearch는 Inverted Index를 이용한다.
여기서 Inverted Index는 주어진 키워드를 통해 데이터를 찾아내는 방식을 의미하는 데, Elasticsearch에선 문장들에서 각 키워드들을 파싱 후 대문자 및 유사어등을 체크하여 저장하는 방식이다.
이로 인해 기존 RDMS Index에서 이루어지는 검색 과정에 비해 몇 단계 줄여주어 전문 검색에서 빠른 성능을 보이는 이점을 얻는다.
물론 색인(Index)된 데이터를 통해 검색이 가능하지만 기존과 달리 실시간의 이점이 없으니 주의해야 한다.