Elasticsearch/개념

Elasticsearch - Rollover API

rins 2021. 4. 20. 22:39

Elasticsearch에는 rollover라는 기능이 있습니다. 

 

공식적인 설명은 아래의 링크에서 자세하게 확인이 가능하고, 간단하게 사용법에 대해 정리해보겠습니다.

www.elastic.co/guide/en/elasticsearch/reference/master/indices-rollover-index.html

 

Rollover API | Elasticsearch Guide [master] | Elastic

To trigger a rollover, the current index must meet these conditions at the time of the request. Elasticsearch does not monitor the index after the API response. To automate rollover, use ILM’s rollover instead.

www.elastic.co

# 1. 별칭에 대한 인덱스를 is_write_index를 true로 생성한다.

# Request
curl -X POST "localhost:9200/_aliases?pretty" -H 'Content-Type: application/json' -d'{
  "actions": [
    {
      "add": {
        "index": "alias1-000001",
        "alias": "“alias1”",
        "is_write_index": true
      }
    }
  ]
}'

 

#2. 주기적으로 별칭에 대해 rollover api를 찔러서 만약 해당 원하는 조건 초과시, 새 인덱스를 만들도록 한다. (rolled_over = true로 response가 올 시, 생성되는것, 그리고 is_write_index는 새로 생성된 것으로 저절로 옮겨가진다.)

# Request 
# 위에서 설정한 alias1에 대해 _rollover의 조건을 최대 문서 갯수 1로 설정한다. 이외에도 다양한 설정 가능
curl -X POST "localhost:9200/alias1/_rollover?pretty" -H 'Content-Type: application/json' -d'
 {"conditions" : {"max_docs" : 1} }’

# Response
# 조건을 넘었다면 새로운 인덱스 생성

{
  "acknowledged" : true,
  "shards_acknowledged" : true,
  "old_index" : "alias1-000001",
  "new_index" : "alias1-000002",
  "rolled_over" : true,
  "dry_run" : false,
  "conditions" : {
    "[max_docs: 1]" : true
  }
}
#3. 데이터 insert할 시에는 별칭으로 insert를 한다. (그러면 알아서 현재 write인 인덱스로 데이터가 들어가진다.)

# Request
curl -X POST "localhost:9200/alias1/doc?pretty" -H 'Content-Type: application/json' -d'
 {"name" : "dd177”}'

# Response
{
  "_index" : "alias1-000002",
  "_type" : "doc",
  "_id" : "IdUFqngBPhJWr6yd4_C2",
  "_version" : 1,
  "result" : "created",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 0,
  "_primary_term" : 1
}

 

샤드의 크기를 아예 일정하게 유지하고자 할때 사용하면 유용할 것같은 방식입니다. 다만 day로 조건을 경우에는 해당 월로 조건을 걸 수 없다거나, 인덱스의 명칭은 {사용자가 정한 명칭}-000001 에서 숫자만 증가하는 방식으로만 사용가능하다는 점 등의 원하지 않는 요소들이 좀 있어서, 테스트만 해보고 제가 직접적으로 써야만 하는 이유가 생기지 않는 이상은 사용하지 않을 것같은 기능이기도 합니다. 

'Elasticsearch > 개념' 카테고리의 다른 글

Elasticsearch -Forcemerge API  (0) 2021.04.22
Elasticsearch에 대하여  (0) 2021.04.19