Elasticsearch에는 rollover라는 기능이 있습니다.
공식적인 설명은 아래의 링크에서 자세하게 확인이 가능하고, 간단하게 사용법에 대해 정리해보겠습니다.
www.elastic.co/guide/en/elasticsearch/reference/master/indices-rollover-index.html
# 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 |