Append-only index
출처: 문서
본문
추가 전용 인덱스
추가 전용 인덱스는 문서 생성 후 모든 업데이트나 삭제를 차단하고 문서 수집(추가)만 허용하는 불변 인덱스예요. 인덱스에 추가 전용 설정을 활성화하면 OpenSearch가 기존 문서에 대한 수정을 막아요. 인덱스에 새 문서만 추가할 수 있어요.
인덱스를 추가 전용으로 구성하면 다음 작업에서 오류가 반환돼요:
- 문서 업데이트 호출(Update API)
- 문서 삭제 호출(Delete API)
- 쿼리로 업데이트 호출
- 쿼리로 삭제 호출
- 업데이트, 삭제 또는 upsert 작업으로 이루어진 Bulk API 호출
- 사용자 정의 문서 ID가 포함된 인덱스 작업이 있는 Bulk API 호출
추가 전용 인덱스는 업데이트나 삭제를 수행하지 않기 때문에 소프트 삭제와 버전 추적을 건너뛰어 저장소 사용량과 세그먼트 병합 중 작업을 줄여줘요. 로그, 메트릭, 관찰 가능성 데이터 또는 보안 이벤트와 같이 수집 후 수정되지 않는 데이터에 추가 전용 인덱스를 사용하세요.
추가 전용 인덱스 생성
다음 요청은 모든 업데이트가 비활성화된 my-append-only-index라는 새 인덱스를 생성해요:
PUT /my-append-only-index
{
"settings": {
"index.append_only.enabled": true
}
}
{% include copy-curl.html %}
인덱스가 추가 전용으로 설정된 후에는 다른 인덱스 유형으로 변경할 수 없어요. {: .warning}
기존 인덱스의 데이터를 새 추가 전용 인덱스에 추가하려면 Reindex API를 사용하세요. 추가 전용 인덱스는 사용자 정의 문서 ID를 지원하지 않기 때문에 소스 인덱스의 ctx._id를 null로 설정해야 해요. 이렇게 하면 재인덱싱을 통해 문서를 추가할 수 있어요.
다음 예제는 소스 인덱스(my-source-index)의 문서를 새 추가 전용 인덱스로 재인덱싱해요. 먼저 소스 인덱스를 생성하세요:
POST /my-source-index/_doc?refresh=true
{
"message": "login attempt"
}
{% include copy-curl.html %}
그런 다음 해당 문서를 추가 전용 인덱스로 재인덱싱하세요:
POST /_reindex
{
"source": {
"index": "my-source-index"
},
"dest": {
"index": "my-append-only-index"
},
"script": {
"source": "ctx._id = null",
"lang": "painless"
}
}
{% include copy-curl.html %}
대량 색인을 위한 적응형 샤드 선택
3.5에서 도입됨 {: .label .label-purple }
추가 전용 인덱스의 경우 OpenSearch는 명시적으로 지정하지 않으면 쓰기 라우팅을 위해 임의의 _id를 자동으로 생성해요. 대량 쓰기에서 단일 대량 항목은 수십 개의 하위 대량으로 분할되어 다른 샤드로 전달될 수 있으며, 이로 인해 상당한 긴 꼬리 지연 시간이 발생하고 쓰기 성능이 현저히 저하돼요.
적응형 샤드 선택은 단일 대량 항목의 모든 하위 대량이 동일한 샤드로 라우팅되도록 보장하여 대량 쓰기 성능을 크게 향상시켜요.
index.bulk.adaptive_shard_selection.enabled 설정은 동적이므로 기존 추가 전용 인덱스에서 활성화할 수 있어요:
PUT /my-append-only-index/_settings
{
"index.bulk.adaptive_shard_selection.enabled": "true"
}
{% include copy-curl.html %}
인덱스를 생성할 때도 설정할 수 있어요:
PUT /my-new-append-only-index
{
"settings": {
"index.append_only.enabled": "true",
"index.bulk.adaptive_shard_selection.enabled": "true"
}
}
{% include copy-curl.html %}
자세한 내용은 인덱스 설정을 참조하세요.