본문 바로가기

시스템/DB

ElasticSearch 보충

하나의 클러스터에 여러개의 노드가 존재할 수 있다. 

 

 

샤드 설명

- 샤드는 인덱스(ES의 논리적 그룹핑 단위)를 더 작은 조각으로 나누는 방법이다.

- 각 조각은 샤드(Shard)라 부른다.

- 샤딩은 인덱스 레벨에서 이뤄진다.

- 주요 목적은 데이터 볼륨을 가로로(Horizontally) 늘리기(?) 위함이다. 

- 인덱스가 저장할 수 있는 문서 수를 늘릴 수 있다. 따라서, 노드에 인덱스 수를 늘릴 수 있다.

- 각 샤드는 Apache Lucene Index 이다(?)

- ES 인덱스는 하나 이상의 Apache Lucene Indices 이다.

- 샤드는 정해진 사이즈가 없으며, Doc이 추가될 수록 증가할 수 있다. Doc은20억개 가량 저장할 수 있따(?)

- 인덱스는 디폴트로 싱글 샤드를 가진다.

- 샤딩은 쿼리 Throughput을 향상 시킬 수 있다.

 

※ 퀴즈)

인덱스가 사이즈를 늘리게 된다면, 하나의 노드로는 부족할 수 있다. 결국 클러스터 안의 어떠한 노드도 해당 인덱스를 가진 문서를 수용할 수 없게 된다. 따라서, 데이터 볼륨 스케일을 늘리는 것은 샤딩으로 가능하다. 샤드 Replica 증가가 곧 노드 증가로 이어진다.

 

"샤드는 인덱스를 찢는다!!"

 

 

Managing Documents

# 인덱스 생성
PUT /products
{
  "settings": {
    "number_of_shards": 2,
    "number_of_replicas": 2
  }
}

# 인덱스 목록 조회
GET /_cat/indices

# 인덱스 결과 조회
GET /products

# 인덱스 도큐먼트 지정(랜덤 ID, 지정 ID)
POST /products/_doc
{
  "name": "Coffee Maker",
  "price": 64,
  "in_stock": 10
}

POST /products/_doc/100
{
  "name": "Toster",
  "price": 49,
  "in_stock": 4
}

# ID 포함 결과 조회
GET /product/_doc/100

# 값 업데이트, 추가 및 조회
POST /product/_update/100
{
  "doc": {
    "in_stock": 3
  }
}

POST /product/_update/100
{
  "doc": {
    "tags": ["electronics"]
  }
}

GET /product/_doc/100



 

 

반응형

'시스템 > DB' 카테고리의 다른 글

SELECT 기본 용법  (0) 2022.08.02