데이터 스트림 수정 API
데이터 스트림 수정 API (Modify Data Stream API)
기존의 일반 인덱스를 데이터 스트림으로 옮기거나, 데이터 삭제 없이 백킹 인덱스를 분리하고 싶으시죠? 데이터 스트림 수정 API가 데이터 스트림의 백킹 인덱스를 추가하거나 제거해 줘요.
출처: 문서
본문
3.8에서 도입
⚠️ 이 기능은 실험적(experimental)이며 프로덕션 환경에서 사용을 권장하지 않아요. 기능 진행 상황에 대한 업데이트나 피드백은 관련 GitHub issue를 참고하세요.
데이터 스트림 수정 API는 데이터 스트림의 백킹 인덱스를 추가하거나 제거해요. 이 API를 사용해 기존의 일반 인덱스를 데이터 스트림으로 마이그레이션하거나, 데이터를 삭제하지 않고 백킹 인덱스를 분리할 수 있어요.
백킹 인덱스를 추가하거나 제거할 때 다음 동작과 제한이 적용돼요.
- add와 remove 작업은 데이터 스트림 메타데이터만 변경해요. 인덱스와 그 데이터는 변경되지 않아요. 생성, 삭제, 복원, 재배치되는 샤드가 없어요.
- 요청에 여러 add와 remove 작업을 포함할 수 있어요. 모든 작업은 단일 클러스터 상태 업데이트로 원자적으로 적용되며, 결과는 작업 순서와 무관해요.
- 데이터 스트림 세대는 백킹 인덱스에서 파생돼요(가장 높은 백킹 인덱스 카운터가 쓰기 인덱스). 직접 설정할 수 없어요.
- 쓰기 인덱스는 제거할 수 없고, 마지막 백킹 인덱스를 제거하는 것은 거부돼요.
- 추가된 인덱스는 데이터 스트림의 타임스탬프 필드를
date또는date_nanos로 매핑해야 해요. 추가된 인덱스는 숨김으로 표시되고, 제거된 인덱스는 다시 표시돼요. - 추가된 인덱스는
.ds-<data_stream>-NNNNNN명명 규칙을 따를 필요가 없어요. 따라서 기존의 일반 인덱스를 데이터 스트림으로 마이그레이션할 수 있어요. - 인덱스는 두 개 이상의 데이터 스트림의 백킹 인덱스가 될 수 없어요.
엔드포인트
POST /_data_stream/_modify
쿼리 파라미터
다음 표는 사용 가능한 쿼리 파라미터예요. 모든 쿼리 파라미터는 선택적이에요.
| Parameter | Data type | Description |
|---|---|---|
| cluster_manager_timeout | Time | cluster manager 노드의 응답을 기다리는 시간이에요. 기본값은 30s예요. |
| timeout | Time | 클러스터의 응답을 기다리는 시간이에요. 기본값은 30s예요. |
요청 본문 필드
다음 표는 사용 가능한 요청 본문 필드예요.
| Field | Data type | Description |
|---|---|---|
| actions | Array | 수행할 작업 목록이에요. 최소한 하나의 작업을 제공해야 해요. 필수예요. |
actions 배열의 각 요소는 하나의 작업을 지정하는 단일 키 객체예요. 다음 표는 사용 가능한 작업 필드를 나열해요.
| Field | Data type | Description |
|---|---|---|
| add_backing_index.data_stream | String | 수정할 데이터 스트림의 이름이에요. 필수예요. |
| add_backing_index.index | String | 백킹 인덱스로 추가할 인덱스의 이름이에요. 필수예요. |
| remove_backing_index.data_stream | String | 수정할 데이터 스트림의 이름이에요. 필수예요. |
| remove_backing_index.index | String | 제거할 백킹 인덱스의 이름이에요. 필수예요. |
| add_backing_index | Object | 기존 인덱스를 백킹 인덱스로 데이터 스트림에 추가해요. 선택적이에요. |
| remove_backing_index | Object | 데이터 스트림에서 백킹 인덱스를 제거해요. 선택적이에요. |
예시 요청
다음 요청은 단일 원자 연산으로 logs-foo 데이터 스트림에서 백킹 인덱스를 제거하고, 기존의 legacy-logs-2023 인덱스를 그 데이터 스트림에 추가해요.
POST /_data_stream/_modify
{
"actions": [
{
"remove_backing_index": {
"data_stream": "logs-foo",
"index": ".ds-logs-foo-000001"
}
},
{
"add_backing_index": {
"data_stream": "logs-foo",
"index": "legacy-logs-2023"
}
}
]
}
예시 응답
{
"acknowledged": true
}
보안
Security 플러그인을 사용한다면 적절한 권한이 있는지 확인해야 해요: indices:admin/data_stream/modify.
관련 문서
- Data streams
- Data Stream Stats API
더 알아보기 (Learn more)
- 실험적 기능이므로 프로덕션 적용 전에 충분히 검증하세요.
- 이 연산은 샤드를 만들거나 옮기지 않고 메타데이터만 변경해요.