기종 6점대 까지는, index 생성 시 num_of_shards를 지정하지 않으면
기본 5개 였는데, 7점대부터 기본 1개로 변경되었다.
기존 자동 생성되도록 만들어진 index들이 그럼 앞으로 shard 1개로 만들어지니, 이를 방지하기 위해 기존 사용되던 5개의 값들을 사용하도록 변경해준다.
PUT _template/basic_shard_setting
{
"index_patterns": ["name1-*","name2-*","name3-*"],
"settings": {
"number_of_shards": 5,
"number_of_replicas": 1
}
}
앞에서 생성한 basic_shard_setting은 조회해보면 order가 기본 0으로 되어있다.
그런데 이미 name1-, name2-, name3-* 들에 이미 order 0인 template이 있고, 그곳에 number_of_shards가 지정되어 있다면 어떤것이 우선순위로 수행될까?
PUT _template/name1_template
{
"index_patterns": [
"name1*"
],
"settings": {
"index": {
"number_of_shards": 3,
"number_of_replicas": 1
}
}
}
PUT name1-test
GET name1-test
{
"name2-test" : {
"aliases" : { },
"mappings" : { },
"settings" : {
"index" : {
"routing" : {
"allocation" : {
"include" : {
"_tier_preference" : "data_content"
}
}
},
"number_of_shards" : "5",
"provided_name" : "name2-test",
"creation_date" : "1673939210866",
"number_of_replicas" : "1",
"uuid" : "zXT3F8VbTSm5yGzcHU52dg",
"version" : {
"created" : "7170799"
}
}
}
}
}
basic_shard_setting이 적용된 것을 알 수 있다.
잠깐... 어떻게 알고 저걸 적용했지?
PUT _template/name1_template
{
"index_patterns": [
"name1*"
],
"settings": {
"index": {
"number_of_shards": 3,
"number_of_replicas": 1
}
}
}
DELETE name1-test
PUT name1-test
GET name1-test
{
"name1-test" : {
"aliases" : { },
"mappings" : { },
"settings" : {
"index" : {
"routing" : {
"allocation" : {
"include" : {
"_tier_preference" : "data_content"
}
}
},
"number_of_shards" : "3",
"provided_name" : "name1-test",
"creation_date" : "1673939428414",
"number_of_replicas" : "1",
"uuid" : "6ZsbX6MaTvmNb_9RGc0FRw",
"version" : {
"created" : "7170799"
}
}
}
}
}
결과적으로 template order가 같다면, 나중 생성된template이 우선되는 거였다.
우리는 basic_shard_setting에만 number_of_shard를 적용해 놓을 거지만, 양쪽에 있을 때 어떤 이유에서든 template이 업데이트 되면 업데이트 된 것으로 적용되니 유의해야겠다.