반응형

엘라스틱서치를 사용하다보면 초기에 인덱스 필드의 타입을 잘 못 지정해서 타입을 변경해 주어야하는 경우가 종종 생긴다.

 

이런 경우 필드의 타입을 변경하는 방법은 없다. 그래서 이런 경우엔 인덱스를 다시 만들어 주고 새로운 인덱스에 다시 데이터를 넣어주어야 한다. 

 

기존 index에 있던 데이터를 새로운 index에 넣어주는 작업을 reindex라고 하고 엘라스틱서치에서 기본적으로 지원해주는 명령어이다.

 

test1 인덱스에 있던 데이터를 test2 인덱스로 넣어준다고 예를 들어보자.

 

POST _reindex?wait_for_completion=false
{
  "source": {
    "index": "test1"
  },
  "dest": {
    "index": "test2"
  }
}

 

이렇게 해주면 작업중이라는 짧은 메세지가 바로 나온다. 

 

(?wait_for_completion=false 이 옵션은 데이터가 많은 경우 타임아웃 에러가 나기때문에 추가해주었다.)

 

그러면

 

GET /_cat/indices?v

 

전체 인덱스를 조회해서 새로운 인덱스에 데이터가 다 찰때까지 기다려주면 된다. 그 이후 기존 인덱스는 지워준다.

 

DELETE /test1?pretty

 

이렇게 해주면 마무리 된다.

 

 

반응형

+ Recent posts