본문 바로가기
WIKI 기술 지식 베이스

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 %}

자세한 내용은 인덱스 설정을 참조하세요.

더 알아보기 (Learn more)