Self-Study/기타

[Elasticsearch] elasticsearch의 기본 개념

Raadian 2022. 7. 5. 08:18

References

https://www.elastic.co/kr/

https://jaemunbro.medium.com/elastic-search-기초-스터디-ff01870094f0

https://victorydntmd.tistory.com/308

https://ko.wikipedia.org/wiki/일래스틱서치

 

개요

ElasticsearchApache 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)된 데이터를 통해 검색이 가능하지만 기존과 달리 실시간의 이점이 없으니 주의해야 한다.