[Elasticsearch] 중단 시간 없이 매핑 변경

출처 : 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
  1. elasticsearch는 모든 인덱스를 수정 불가능한 세그먼트에 저장하고 각 세그먼트들은 실행 중에는 업데이트할 수 없음

  2. 인덱스 별칭(aliases)을 설정하면 백그라운드에서 데이터를 다시 인덱싱할 수 있음

좋은 웹페이지 즐겨찾기