<aside> 💡 최근 Elastic Cloud로 elasticsearch 서비스 클라우드를 이전하는 과정에서 이전에 사용하지 못한 플러그인을 사용할 수 있게되면서 인덱스의 구조 정의를 다시 할 필요성이 생겼다. 인덱스의 매핑구조가 바뀌게 되면 재색인(re-index) 과정이 필요한데 안정적이고 깔끔한 재색인 방법을 위해서 글을 작성하게 되었다.

</aside>

재색인 배포 흐름

가장 간단한 방식의 흐름은 다음과 같을 수 있다. 먼저 서버가 바라보고 있는 인덱스를 점선 화살표로 설정하였고 우리의 목표는 새롭게 인덱스한 결과를 점선 화살표 위에 올리는 것이다.

Untitled

핵심은 두번째 과정과 세번째 과정에서 발생하는 딜레이를 최소한으로 줄이는 것이다.


실험

리인덱싱 쉘 스크립트 사용방법 → 바로가기

재색인 배포 작업은 새로운 파이프라인을 만들지 않고 prefix를 활용하여 shell script를 통해 통제를 하려한다. 옵션을 통해서 각 상황에 맞는 동작을 실행하도록 하였다.

  1. 새로운 인덱스 생성

  2. 기존의 인덱스를 POST _reindex를 통해서 복사본을 만든다.

    _reindex의 경우는 인덱스 세팅에 관련된 정보는 가져오지 않기 때문에 이를 위해선 사전에 매핑 데이터를 미리 만들어 주어야 한다.

  3. temp 인덱스를 서버가 바라보는 인덱스 이름으로 바꿔준다.

    기존 인덱스를 삭제하고 현재 설정으로 인덱스를 정의한 후에 다시 _reindex API를 요청한다.

피드백

명령어 사용방법