Elasticsearch number_of_shard 기본값 변경 대응

brody·2023년 1월 17일
0

엘라스틱서치

목록 보기
5/5

기본값 변경 내역

기종 6점대 까지는, index 생성 시 num_of_shards를 지정하지 않으면

기본 5개 였는데, 7점대부터 기본 1개로 변경되었다.

template 생성

기존 자동 생성되도록 만들어진 index들이 그럼 앞으로 shard 1개로 만들어지니, 이를 방지하기 위해 기존 사용되던 5개의 값들을 사용하도록 변경해준다.

PUT _template/basic_shard_setting
{
  
  "index_patterns": ["name1-*","name2-*","name3-*"],    
  "settings": {
    "number_of_shards": 5,
    "number_of_replicas": 1
  }
}

template order

앞에서 생성한 basic_shard_setting은 조회해보면 order가 기본 0으로 되어있다.

그런데 이미 name1-, name2-, name3-* 들에 이미 order 0인 template이 있고, 그곳에 number_of_shards가 지정되어 있다면 어떤것이 우선순위로 수행될까?

기존 생성되어있는 template

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이 적용된 것을 알 수 있다.
잠깐... 어떻게 알고 저걸 적용했지?

name1_template을 업데이트 후 재 확인

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이 업데이트 되면 업데이트 된 것으로 적용되니 유의해야겠다.

profile
일하며 하는 기록

0개의 댓글