본문 바로가기

Monitoring/Elasticsearch

02. Overview

 
Cluster 와 Node (물리적 구분)
 
노드는 데이터를 저장하며, 데이터 인덱싱과 검색 작업에 관여하는 
 
클러스터의 구성원이 되는 단일 서버들을 가리킨다.
 
 
 
 
Index 와 Document
 
인덱스는 유사한 Property 를 가지는 Document 의 집합으로 인덱스 이름으로 식별되며
 
논리적인 그룹이라고 보면 된다.
 
 
 
 
Shard
 
하나의 인덱스는 노드 서버의 용량을 초과할 만큼의 대량의 데이터가 저장 가능하다.
 
 
따라서 인덱스를 여러 조각(Shared) 로 나눠서 저장하는 경우가 필요할 수 있는데 
 
이렇게 나누는 것을 샤딩(Sharding) 이라고 한며 인덱스를 생성시 Shard 개수를 지정할 수 있다. (기본값 5)
 
아래는 단일 노드의 용량이 512 GB 이고 Index 생성시 Shard 개수를 4로 한 경우에 구성된 Cluster 를 보여준다.
 
 
 
 
Replica
 
샤드 또는 노드가 장애를 일으키는 경우를 대비하여 하나 이상의 복사본 (Replica Shard)을 생성하며
 
고가용성을 위해 Replica Shard 는 원본과 다른 노드에 존재한다.
 
 
Replica Shard 의 값이 원본 Shard 와 동일함을 보장하기 위해 Shared 는 CRUD 등을 처리하고 나서 
 
Replica Shard 에 복사 작업이 완전히 끝난 다음에서야 이를 확인하고 Client 에 응답하게 된다.
 
 
 
 
Searching Data
 
이번에는 Electricsearch 에서 어떻게 데이터를 검색하는지 알아보자.
 
 
먼저  하나의 Index 가 포함된 세 개의 Node 로 구성된 Cluster 가 있다고 가정해 보자.
 
 
먼저 클라이언트가 검색 쿼리를 클러스터에 보낸다.
 
 
Query 를 처음 받은 노드는 "조정 Node" 이며 이 노드는 해당 쿼리를 다른 모든 노드로 보낸다.
 
 
이후 이에 대한 응답이 들어오면 자기 자신에 대하여 Query 를 수행하며
 
결과를 Assemble 하며 클라이언트에 응답을 한다.
 
 
 
 
Distributing Document accross shards
 
Document 는 특정 노드에 분배되지 않고 Routing 해시 함수에 의해 랜덤 분배된다.
 
 
 
 
물리적 / 논리적 구성 비교
 
 
 
 
Document Example
 
 
 
 
Querying
 
통신 방법으로 RestfulAPI 를 사용하므로 GET, PUT, POST, DELETE 를 사용하여 
 
HTTP Request 를 Elasticsearch 서버에 요청한다.
 
 
 
 
Data structure sample
 
 
 
 
Compare with Relation DB
 
 
 
 
 
 
 
 
 
 

'Monitoring > Elasticsearch' 카테고리의 다른 글

06. Mapping  (0) 2020.01.17
05. Document  (0) 2020.01.17
04. Cluster  (0) 2020.01.17
03. Install  (0) 2020.01.17
01. Elastic Stack  (0) 2020.01.17