[Opensearch]Reindex 용도별 사용법

Choise.o·2025년 8월 10일
0

Opensearch reindex API 정리하면서 찾아본 용도별 사용하는 쿼리

reindex API 용도

  • 매핑 변경 : 기존 인덱스의 필드 타입을 변경하고 싶을 때
  • 데이터 필터링 : 특정 조건에 맞는 데이터만 옮기고 싶을 때
  • 백업 목적 : 인덱스를 복사하여 안전하게 테스트할 때
  • 새로운 설정 적용 테스트 : 분석기 변경, 샤드 설정 변경 등을 적용해볼 때

매핑 변경(dest 인덱스 매핑 변경하여 생성. 동일한 필드명의 매핑 수정은 불가능),
백업(reindex API 호출하면 새로운 인덱스에 데이터 저장),
새로운 설정 적용 테스트(dest 인덱스 생성 시 number_of_shards 나 analyzer를 새로운 것으로 적용)는 쿼리가 필요한건 아니어서 생략

1) 데이터 필터링

reindex로 데이터를 복사할 때 조건을 설정하여 일부 데이터만 복사할 수 있다.

  • logDate 매핑 값을 기준으로 7일 이내에 생성된 데이터만 복사하는 경우
POST _reindex
{
  "source": {
    "index": "old_index",
    "query": {
      "range": {
        "logDate": {
          "gte": "now-7d/d"
        }
      }
    }
  },
  "dest": {
    "index": "new_index"
  }
}

2) 데이터 변경

스크립트를 사용하여 원본 데이터를 변경한 뒤 reindex할 수도 있다.

  • price 매핑 값을 10% 증가시켜 복사하려는 경우
POST _reindex
{
  "source": {
    "index": "products"
  },
  "dest": {
    "index": "products_new"
  },
  "script": {
    "lang": "painless",
    "source": "ctx._source.price = ctx._source.price * 1.1"
  }
}

0개의 댓글