출처 : https://www.elastic.co/kr/blog/changing-mapping-with-zero-downtime
# 새 인덱스를 만들고 데이터 카피
PUT my_index_v1.0.1
{
"mappings": {
...
},
"settings": {
...
}
}
POST _reindex
{
"source": {
"index": "my_index_v1.0.0"
},
"dest": {
"index": "my_index_v1.0.1"
}
}
# aliases 설정
POST _aliases
{
"actions": [
{
"remove": {
"alias": "my_index",
"index": "my_index_v1.0.0"
}
},
{
"add": {
"alias": "my_index",
"index": "my_index_v1.0.1"
}
}
]
}
# 기존 인덱스 제거
DELETE my_index_v1.0.0
elasticsearch는 모든 인덱스를 수정 불가능한 세그먼트에 저장하고 각 세그먼트들은 실행 중에는 업데이트할 수 없음
인덱스 별칭(aliases)을 설정하면 백그라운드에서 데이터를 다시 인덱싱할 수 있음