공부하는 블로그

Elasticsearch | Introduction 본문

NoSQL/Elasticsearch

Elasticsearch | Introduction

치킨닮은닭 2020. 10. 11. 22:59

# Elasticsearch?

엘라스틱서치(Elasticsearch)는 아파치 루씬(Apache Lucene) 기반의 실시간 분산형 검색 엔진이다. 엘라스틱을 통해 루씬 라이브러리를 단독으로 사용할 수 있게 되었으며, 방대한 양의 데이터를 신속하게 처리 가능할 수 있게 되었다.

* Apache Lucene : Java 언어로 이루어진 정보 검색 오픈소스 라이브러리

 

Elasticsearch란? | Elastic

Elasticsearch는 텍스트, 숫자, 위치 기반 정보, 정형 및 비정형 데이터 등 모든 유형의 데이터를 위한 분산형 오픈 소스 검색 및 분석 엔진입니다. Elasticsearch는 Apache Lucene을 기반으로 구축되며, (현��

www.elastic.co

"분산형 저장소"

 엘라스틱서치에 저장된 문서는 샤드(Shard)라 불리는 여러 조각들에 걸쳐 분산되고, 샤드는 레플리카(Replica)라는 데이터 사본을 생성할 수 있다. 이 데이터 사본은 서버 장애 시 이용되어 데이터의 고가용성을 제공한다.

 

"Schema-less"

 기존 RDBMS에서 사용하는 테이블과 스키마 대신에 문서(Document) 구조로 된 비정형 데이터를 사용한다. 스키마로부터 자유로운 덕분에 컬럼을 동적으로 정의하여 필요한 데이터만 저장하므로 데이터 공간을 절약할 수 있다. 

 

"Full-text 검색"

 엘라스틱 서치는 Full-text 검색 능력을 가지고 있다. 흔히 사용되는 RDBMS의 LIKE 쿼리는 형태소 분석을 진행하지 않고 문서를 통째로 검색하는 방식으로 성능을 저하시키는 원인이 된다. 그러나 엘라스틱은 검색을 할 수 있는 Term(의미의 최소단위)로 단어의 형태소 분석을 수행하고, 이 단어들과 연관된 문서를 매핑하여 검색시켜 빠른 검색 속도를 보장한다. 

 

"RESTful API"

 엘라스틱은 REST API를 제공하여 다양한 개발 언어에서 http 형식으로 저장소에 접근할 수 있다.

 

Elasticsearch RDB
Index Database
Type Table
Document Row
Field Column
Mapping Schema
GET SELECT
PUT UPDATE
POST INSERT
DELETE DELETE

 

# Elasticsearch 구조

Elasticsearch 내부 구조 - 출처  https://www.elastic.co/kr/blog/how-many-shards-should-i-have-in-my-elasticsearch-cluster

"Cluster"

 클러스터(Cluster)는 한개 이상의 노드(Node) 집합으로 모든 노드를 검색할 수 있는 기능을 제공한다. 서로 다른 클러스터는 데이터의 접근이나 교환을 할 수 없는 독립적인 시스템으로 유지된다. 

 

"Node"

 클러스터의 일부로 단일 서버이다. 데이터를 보관하고 클러스터 인덱싱과 검색 능력에 관여한다.

 

"Index"

 비슷한 특성을 가진 도큐먼트(Document)의 집합으로 이름으로 구분된다. 도큐먼트는 인덱싱 될 수 있는 정보의 기본단위로 JSON으로 표현된다.

 

"Shards"

 엘라스틱서치는 스케일 아웃을 위해 인덱스를 샤드(Shard)라고 불리는 여러개의 조각으로 다시 나눌 수 있는 기능을 제공한다. 샤드는 데이터 일부를 조회하기 위한 독립적인 검색 엔진이라 할 수 있다. 기본적으로 1개가 존재하며 검색 성능 향상을 위해서 샤드의 개수를 조정한다.

 

"Replicas"

 레플리카(Replicas)는 샤드의 복사본으로 데이터의 고가용성을 위하여 사용된다. 노드가 깨졌을 경우 데이터의 신뢰성을 위해 존재하므로 레플리카는 서로 다른 노드에 존재해야한다.


References

 

- 엘라스틱서치와 키바나 실용적인 소개서 : velog.io/@jakeseo_me/%EB%B2%88%EC%97%AD-%EC%97%98%EB%9D%BC%EC%8A%A4%ED%8B%B1%EC%84%9C%EC%B9%98%EC%99%80-%ED%82%A4%EB%B0%94%EB%82%98-%EC%8B%A4%EC%9A%A9%EC%A0%81%EC%9D%B8-%EC%86%8C%EA%B0%9C%EC%84%9C

- 엘라스틱서치를 사용해야 하는 이유 : needjarvis.tistory.com/519

- [Elasticsearc] 기본 개념잡기 : victorydntmd.tistory.com/308

Comments