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

ISM supported operations

원문 보기 위키 갱신

출처: 문서

본문

ISM 지원 작업

ISM은 다음 작업을 지원해요:

강제 병합

개별 샤드의 세그먼트를 병합하여 Lucene 세그먼트 수를 줄여요. 이 작업은 병합 프로세스를 시작하기 전에 인덱스를 read-only 상태로 설정하려고 해요.

매개변수 설명 유형 필수 여부
max_num_segments 샤드를 축소할 세그먼트 수예요. Integer 예

다음 예제는 각 샤드의 세그먼트를 단일 세그먼트로 병합해요:

{
  "force_merge": {
    "max_num_segments": 1
  }
}

{% include copy.html %}

읽기 전용

관리 인덱스를 읽기 전용으로 설정해요.

read_only 작업은 매개변수를 받지 않아요:

{
  "read_only": {}
}

{% include copy.html %}

관리 인덱스의 인덱스 설정 index.blocks.write를 true로 설정해요.

index.blocks.write 블록은 인덱스가 새로고침되는 것을 막지 않아요. {: .note}

읽기 쓰기

관리 인덱스를 쓰기 가능으로 설정해요.

read_write 작업은 매개변수를 받지 않아요:

{
  "read_write": {}
}

{% include copy.html %}

필드 도메인 게시

3.9에서 도입 {: .label .label-purple }

관리 인덱스의 필드 도메인을 계산하고 인덱스 메타데이터에 게시해요. OpenSearch는 인덱스 수준 검색 프루닝을 위해 필드 도메인을 사용해요.

필드 도메인은 하나의 인덱스에서 필드의 최소값과 최대값을 포함해요. date_range 필드 도메인 유형은 date 및 date_nanos 필드에 적용돼요. date 필드의 경우 ISM은 경계를 에포크 밀리초로 저장하고, date_nanos 필드의 경우 ISM은 경계를 에포크 나노초로 저장해요.

필드 도메인을 계산하기 전에 ISM은 인덱스를 새로고침해요. 그런 다음 각 구성된 필드의 최소값과 최대값을 계산하여 인덱스의 index_field_domains 메타데이터에 게시해요. 구성된 필드에 인덱스에 값이 없으면 ISM은 해당 필드에 대한 필드 도메인을 게시하지 않으며, 생성된 필드 도메인이 없으면 작업은 필드 도메인을 게시하지 않고 완료돼요.

매개변수 설명 유형 필수 여부
fields ISM이 필드 도메인을 계산하고 게시할 필드예요. Array 예
fields.field 필드 이름이에요. String 예
fields.type 필드 도메인 유형이에요. 유효한 값은 date_range예요. String 예

다음 예제는 @timestamp 필드에 대한 date_range 필드 도메인을 게시해요:

{
  "publish_field_domains": {
    "fields": [
      {
        "field": "@timestamp",
        "type": "date_range"
      }
    ]
  }
}

{% include copy.html %}

이 작업이 실행되기 전에 관리 인덱스가 쓰기 차단되어야 하므로 publish_field_domains 앞에 read_only 작업을 추가해요:

{
  "actions": [
    {
      "read_only": {}
    },
    {
      "publish_field_domains": {
        "fields": [
          {
            "field": "@timestamp",
            "type": "date_range"
          }
        ]
      }
    }
  ]
}

{% include copy.html %}

이 작업은 게시 후에도 쓰기 차단 상태로 유지되는 인덱스에만 사용해요. 쓰기가 재개되면 새 문서가 게시된 필드 도메인 밖에 있을 수 있으며, 프루닝이 일치하는 문서를 보유한 인덱스를 건너뛰어 검색 결과를 자동으로 삭제할 수 있어요. {: .important}

Security 플러그인이 활성화된 경우 ISM 실행 사용자에게 indices:admin/field_domains/put 작업을 사용하여 필드 도메인을 게시할 권한이 있어야 해요.

복제본 수

인덱스에 할당할 복제본 수를 설정해요.

매개변수 설명 유형 필수 여부
number_of_replicas 인덱스에 할당할 복제본 수를 정의해요. Integer 예

다음 예제는 인덱스에 두 개의 복제본을 할당해요:

{
  "replica_count": {
    "number_of_replicas": 2
  }
}

{% include copy.html %}

복제본 설정에 대한 자세한 내용은 기본 샤드 및 복제본 샤드를 참조해요.

축소

인덱스의 기본 샤드 수를 줄일 수 있어요. 이 작업으로 다음을 지정할 수 있어요:

  • 대상 인덱스가 포함해야 하는 기본 샤드 수
  • 대상 인덱스의 기본 샤드에 대한 최대 샤드 크기
  • 대상 인덱스의 기본 샤드 수를 축소할 백분율

다음 예제는 인덱스를 하나의 기본 샤드로 축소하고, 소스 인덱스 이름에 _shrunken을 추가하여 대상 인덱스 이름을 지정하고, my-alias 별칭을 추가해요:

"shrink": {
    "num_new_shards": 1,
    "target_index_name_template": {
        "source": "{% raw %}{{ctx.index}}{% endraw %}_shrunken"
    },
    "aliases": [
      {
        "my-alias": {}
      }
    ],
    "switch_aliases": true,
    "force_unsafe": false
}

{% include copy.html %}

매개변수 | 설명 | 유형 | 예시 | 필수 여부 :--- | :--- |:--- |:--- | num_new_shards | 축소된 인덱스의 최대 기본 샤드 수예요. | Integer | 5 | 예. 단, max_shard_size 또는 percentage_of_source_shards와 함께 사용할 수 없어요. max_shard_size | 대상 인덱스의 샤드 최대 크기(바이트)예요. | Keyword | 5gb | 예. 단, num_new_shards 또는 percentage_of_source_shards와 함께 사용할 수 없어요. percentage_of_source_shards | 축소할 원래 기본 샤드 수의 백분율이에요. 이 매개변수는 기본 샤드 수를 축소할 때 사용할 최소 백분율을 나타내요. 0.0과 1.0 사이여야 하며, 경계는 포함되지 않아요. | Percentage | 0.5 | 예. 단, max_shard_size 또는 num_new_shards와 함께 사용할 수 없어요. target_index_name_template | 축소된 인덱스의 이름이에요. 문자열 및 Mustache 변수 {% raw %}{{ctx.index}}{% endraw %}와 {% raw %}{{ctx.indexUuid}}{% endraw %}를 허용해요. | String 또는 Mustache 템플릿 | {"source": "{% raw %}{{ctx.index}}_shrunken"}{% endraw %} | 아니요 aliases | 새 인덱스에 추가할 별칭이에요. | Object | myalias | 아니요. 별칭 객체의 배열이어야 해요. switch_aliases | true이면 소스 인덱스의 별칭을 대상 인덱스로 복사해요. aliases 필드의 별칭과 이름 충돌이 있으면 aliases 필드의 별칭이 이름 대신 사용돼요. | Boolean | true | 아니요. 기본 암시적 값은 false이며, 기본적으로 별칭이 복사되지 않음을 의미해요. force_unsafe | true이면 복제본이 없어도 인덱스를 축소해요. | Boolean | false | 아니요

작업에 aliases를 추가하려면 매개변수에 별칭 객체의 배열이 포함되어야 해요. 다음 예제와 같아요:

"aliases": [
  {
    "my-alias": {}
  },
  {
    "my-second-alias": {
      "is_write_index": false,
      "filter": {
        "multi_match": {
          "query": "QUEEN",
          "fields": ["speaker", "text_entry"]
        }
      },
      "index_routing" : "1",
      "search_routing" : "1"
    }
  }
]

{% include copy.html %}

닫기

관리 인덱스를 닫아요.

close 작업은 매개변수를 받지 않아요:

{
  "close": {}
}

{% include copy.html %}

닫힌 인덱스는 디스크에 남아 있지만 CPU나 메모리를 소비하지 않아요. 닫힌 인덱스는 읽기, 쓰기 또는 검색할 수 없어요.

인덱스를 닫는 것은 데이터를 적극적으로 검색해야 하는 기간보다 더 오래 데이터를 보관해야 하고 데이터 노드에 충분한 디스크 공간이 있는 경우 좋은 선택이에요. 데이터를 다시 검색해야 하는 경우 닫힌 인덱스를 다시 여는 것이 스냅샷에서 인덱스를 복원하는 것보다 간단해요.

열기

관리 인덱스를 열어요.

open 작업은 매개변수를 받지 않아요:

{
  "open": {}
}

{% include copy.html %}

삭제

관리 인덱스를 삭제해요.

delete 작업은 매개변수를 받지 않아요:

{
  "delete": {}
}

{% include copy.html %}

롤오버

관리 인덱스가 롤오버 조건 중 하나를 충족하면 별칭을 새 인덱스로 롤오버해요.

중요

ISM은 설정된 간격에 따라 정책이 실행될 때마다 작업 조건을 확인하며, 지속적으로 확인하지 않아요. 롤오버는 확인이 수행될 때 값이 설정된 한도에 도달했거나 _초과_한 경우 수행돼요. 예를 들어 min_size가 100 GiB로 설정된 경우 ISM은 99 GiB에서 인덱스를 확인하고 롤오버를 수행하지 않을 수 있어요. 그러나 다음 확인 시 인덱스가 한도를 초과하여 증가한 경우(예: 105 GiB) 작업이 수행돼요. {: .important}

롤오버 작업을 건너뛰어야 하는 경우 인덱스 설정 index.plugins.index_state_management.rollover_skip을 true로 설정할 수 있어요. 예를 들어 "Missing alias or not the write index..." 오류 메시지가 표시되면 index.plugins.index_state_management.rollover_skip 매개변수를 true로 설정하고 다시 시도하여 롤오버 작업을 건너뛸 수 있어요.

인덱스 형식은 패턴 ^.*-\d+$와 일치해야 해요. 예를 들어 (logs-000001)과 같아요. 롤오버할 별칭으로 index.plugins.index_state_management.rollover_alias를 설정해요.

rollover 작업에는 다음 매개변수가 있으며, 모두 선택 사항이에요.

매개변수 설명 유형 예시
min_size 인덱스를 롤오버하는 데 필요한 전체 기본 샤드 스토리지(복제본 제외)의 최소 크기예요. 예를 들어 min_size를 100 GiB로 설정하고 인덱스에 각각 20 GiB의 기본 샤드 5개와 복제본 샤드 5개가 있는 경우 모든 기본 샤드의 총 크기는 100 GiB이므로 롤오버가 발생해요. 중요 참고를 참조해요. String 20gb or 5mb
min_primary_shard_size 인덱스를 롤오버하는 데 필요한 단일 기본 샤드의 최소 스토리지 크기예요. 예를 들어 min_primary_shard_size를 30 GiB로 설정하고 인덱스의 기본 샤드 중 하나의 크기가 조건보다 크면 롤오버가 발생해요. 중요 참고를 참조해요. String 20gb or 5mb
min_doc_count 인덱스를 롤오버하는 데 필요한 최소 문서 수예요. 중요 참고를 참조해요. Integer 2000000
min_index_age 인덱스를 롤오버하는 데 필요한 최소 기간이에요. 인덱스 기간은 생성된 때부터 현재까지의 시간이에요. 지원되는 단위는 d(일), h(시간), m(분), s(초), ms(밀리초), micros(마이크로초)예요. 중요 참고를 참조해요. String 5d or 7h
copy_alias 현재 인덱스의 모든 별칭을 새로 생성된 인덱스로 복사할지 여부를 제어해요. 기본값은 false예요. Boolean true or false
prevent_empty_rollover 인덱스에 문서가 없을 때 롤오버를 건너뛸지 여부를 제어해요. true이면 빈 인덱스는 롤오버되지 않아요. 기본값은 false예요. Boolean true or false
any_of 조건 그룹의 목록이에요. 각 그룹은 min_size, min_primary_shard_size, min_doc_count, min_index_age 중 하나 이상을 포함하는 객체예요. 그룹 내에서는 조건이 AND로 결합되고, 그룹은 OR로 결합돼요. rollover 객체에 직접 설정된 조건과 상호 배타적이에요. 둘 다 지정하거나 빈 목록 또는 빈 그룹을 지정하면 오류가 반환돼요. Array [{"min_index_age": "7d"}]

rollover 객체에 직접 설정된 조건은 논리적 OR로 결합되므로 그중 하나가 충족되는 즉시 롤오버가 발생해요. 다음 롤오버 작업은 인덱스가 7일 이상이거나 크기가 50 GiB 이상일 때 인덱스를 롤오버해요:

{
  "rollover": {
    "min_index_age": "7d",
    "min_size": "50gb"
  }
}

{% include copy.html %}

여러 조건이 함께 충족되어야 하는 경우 any_of를 사용해요. 이 매개변수는 조건 그룹의 목록을 받아요. 그룹 내의 조건은 AND로 결합되고 그룹은 OR로 결합되므로, 하나 이상의 그룹에 있는 모든 조건이 충족되면 롤오버가 발생해요.

다음 롤오버 작업은 인덱스가 7일 이상이고 크기가 50 GiB 이상이거나 문서 수가 100,000,000개에 도달하면 인덱스를 롤오버해요:

{
  "rollover": {
    "any_of": [
      {
        "min_index_age": "7d",
        "min_size": "50gb"
      },
      {
        "min_doc_count": 100000000
      }
    ]
  }
}

{% include copy.html %}

혼합 버전 클러스터에서는 그룹화된 조건을 평가하려면 모든 노드가 OpenSearch 3.7 이상을 실행 중이어야 해요. 이전 버전을 실행 중인 노드는 any_of를 처리하지 않아요. {: .note}

알림

알림을 보내요.

매개변수 설명 유형 필수 여부
destination 대상 URL이에요. Slack, Amazon Chime 또는 웹훅 URL 예
message_template 메시지의 텍스트예요. Mustache 템플릿을 사용하여 메시지에 변수를 추가할 수 있어요. Object 예

대상 시스템은 반드시 응답을 반환해야 하며, 그렇지 않으면 알림 작업에서 오류가 발생해요.

예제 1: Chime 알림

다음 알림 작업은 Amazon Chime 웹훅으로 메시지를 보내요:

{
  "notification": {
    "destination": {
      "chime": {
        "url": "<url>"
      }
    },
    "message_template": {
      "source": "the index is {% raw %}{{ctx.index}}{% endraw %}"
    }
  }
}

{% include copy.html %}

예제 2: 사용자 지정 웹훅 알림

다음 알림 작업은 사용자 지정 웹훅으로 메시지를 보내요:

{
  "notification": {
    "destination": {
      "custom_webhook": {
        "url": "https://<your_webhook>"
      }
    },
    "message_template": {
      "source": "the index is {% raw %}{{ctx.index}}{% endraw %}"
    }
  }
}

{% include copy.html %}

예제 3: Slack 알림

다음 알림 작업은 Slack 웹훅으로 메시지를 보내요:

{
  "notification": {
    "destination": {
      "slack": {
        "url": "https://hooks.slack.com/services/xxx/xxxxxx"
      }
    },
    "message_template": {
      "source": "the index is {% raw %}{{ctx.index}}{% endraw %}"
    }
  }
}

{% include copy.html %}

메시지에서 ctx 변수를 사용하여 정책의 과거 실행을 기반으로 여러 정책 매개변수를 나타낼 수 있어요. 예를 들어 정책에 롤오버 작업이 있는 경우 메시지에서 {% raw %}{{ctx.action.name}}{% endraw %}를 사용하여 롤오버의 이름을 나타낼 수 있어요.

다음 ctx 변수 옵션을 모든 정책에 사용할 수 있어요:

보장된 변수

매개변수 설명 유형
index 인덱스 이름이에요. String
index_uuid 인덱스의 UUID예요. String
policy_id 정책 이름이에요. String

스냅샷

클러스터의 인덱스와 상태를 백업합니다. 스냅샷에 대한 자세한 내용은 스냅샷 생성 및 복원을 참조하세요.

snapshot 작업에는 다음 매개변수가 있습니다.

매개변수 설명 타입 필수 기본값
repository 네이티브 스냅샷 API 작업을 통해 등록하는 리포지토리 이름입니다. String 예 -
snapshot 스냅샷의 이름입니다. 문자열 및 Mustache 변수 {% raw %}{{ctx.index}}{% endraw %}와 {% raw %}{{ctx.indexUuid}}{% endraw %}를 허용합니다. Mustache 변수가 유효하지 않으면 스냅샷 이름은 기본적으로 인덱스 이름으로 설정됩니다. String 또는 Mustache 템플릿 예 -

다음 예제는 my_backup 리포지토리에 있는 인덱스의 스냅샷을 생성하고 인덱스 UUID를 사용하여 스냅샷 이름을 지정합니다.

{
  "snapshot": {
    "repository": "my_backup",
    "snapshot": "{% raw %}{{ctx.indexUuid}}{% endraw %}"
  }
}

{% include copy.html %}

인덱스를 원격으로 변환

기존 인덱스를 원격 스냅샷 리포지토리에서 복원하여 검색 가능한 스냅샷으로 변환합니다. 이 작업은 자주 액세스하지 않는 데이터를 원격 스토리지로 이동하여 검색 가능한 상태를 유지하면서 스토리지 비용을 절감합니다. 복원 요청이 수락되면 원래 인덱스를 제거하려면 delete_original_index를 true로 설정하여 원격 스냅샷 기반 인덱스만 남도록 합니다.

convert_index_to_remote 작업에는 다음 매개변수가 있습니다.

매개변수 설명 타입 필수 기본값
repository 네이티브 스냅샷 API 작업을 통해 등록된 리포지토리 이름입니다. 원격 리포지토리(예: S3, Azure, GCS)여야 합니다. String 예 N/A
snapshot 스냅샷 작업으로 생성된 스냅샷의 이름입니다. String 예 N/A
include_aliases 복원 작업 중에 인덱스 별칭을 포함할지 여부입니다. true로 설정하면 원래 인덱스와 연결된 모든 별칭이 원격 인덱스와 함께 복원됩니다. 애플리케이션이 별칭을 사용하여 인덱스에 액세스하는 경우 이 매개변수를 true로 설정하세요. Boolean 아니요 false
ignore_index_settings 복원 작업 중에 무시할 인덱스 설정의 쉼표로 구분된 목록입니다. 예: index.refresh_interval,index.number_of_replicas. 원래 인덱스에 구성된 설정과 다른 설정을 복원된 원격 인덱스에 적용하려는 경우 유용합니다. String 아니요 빈 문자열
number_of_replicas 복원된 원격 인덱스에 구성할 복제본 수입니다. 별도의 업데이트 작업 없이 변환 프로세스 중에 복제본 할당을 제어할 수 있습니다. 변환 중에 number_of_replicas를 설정하면 클러스터가 노란색 상태가 되거나 복제본 할당 중 불필요한 부하가 발생하는 것을 방지하는 데 도움이 됩니다. Integer 아니요 0
rename_pattern 복원된 검색 가능한 스냅샷 인덱스의 명명 패턴입니다. 원래 인덱스 이름의 자리 표시자로 $1을 사용합니다. 예를 들어 remote_$1은 my-index를 remote_my-index로 이름을 바꿉니다. String 아니요 $1_remote
delete_original_index 복원 요청이 수락된 후 원래 인덱스를 삭제할지 여부입니다. Boolean 아니요 false

전제 조건

convert_index_to_remote 작업을 사용하기 전에 다음을 확인하세요.

  • 원격 리포지토리(S3, Azure, GCS)가 등록되어 있고 액세스 가능한지 확인합니다.
  • 지정된 리포지토리에 인덱스의 스냅샷이 있는지 확인합니다. 일반적으로 snapshot 작업을 사용하여 생성됩니다.
  • 리포지토리 이름이 스냅샷 작업에 사용된 이름과 일치하는지 확인합니다.

사용 참고 사항

인덱스를 검색 가능한 스냅샷으로 복원할 때 원활하고 예측 가능한 변환을 위해 다음을 참고하세요.

  • 원래 인덱스는 delete_original_index를 true로 설정한 경우에만 원격 스냅샷 복원이 성공적으로 수락된 후 삭제됩니다. 기본적으로 원래 인덱스는 검색 가능한 스냅샷 버전과 함께 유지됩니다.
  • convert_index_to_remote 작업에 사용된 리포지토리 이름은 스냅샷 작업 중에 지정된 리포지토리 이름과 일치해야 합니다.
  • actions 배열의 각 객체는 하나의 작업을 보유합니다. snapshot과 convert_index_to_remote를 동일한 객체에 넣는 것은 허용되지만, 그중 하나만 저장되므로 스냅샷이 생성되지 않습니다. 각각을 별도의 객체에 나열하세요.
  • 동적 명명을 위해 Mustache 변수(예: {% raw %}{{ctx.index}}{% endraw %} 또는 {% raw %}{{ctx.indexUuid}}{% endraw %})를 사용하여 스냅샷을 참조할 수 있습니다.
  • number_of_replicas를 설정할 때 클러스터의 용량을 고려하세요. 복제본 복원에 적합한 노드가 충분하지 않으면 클러스터가 노란색 상태가 될 수 있습니다.

기본 예제

다음 예제는 최소 필수 매개변수를 사용한 기본 변환을 보여줍니다. snapshot 작업은 convert_index_to_remote가 복원할 스냅샷을 생성하므로 각각은 actions 배열에서 별도의 객체입니다.

"actions": [
  {
    "snapshot": {
      "repository": "my_backup",
      "snapshot": "{% raw %}{{ctx.index}}{% endraw %}"
    }
  },
  {
    "convert_index_to_remote": {
      "repository": "my_backup",
      "snapshot": "{% raw %}{{ctx.index}}{% endraw %}"
    }
  }
]

{% include copy.html %}

고급 구성 예제

다음 예제는 사용 가능한 모든 구성 옵션을 사용하는 방법을 보여줍니다. 이 구성에는 별칭이 포함되고, 복원 중에 특정 인덱스 설정을 무시하며, 검색 가능한 스냅샷에 대해 두 개의 복제본을 구성합니다.

{
   "convert_index_to_remote": {
      "repository": "my_backup",
      "snapshot": "daily-snapshot",
      "include_aliases": true,
      "ignore_index_settings": "index.refresh_interval,index.number_of_replicas",
      "number_of_replicas": 0,
      "rename_pattern": "remote_$1"
   }
}

{% include copy.html %}

전체 정책 예제

다음 정책은 30일보다 오래된 인덱스를 비용 효율성을 위해 최적화된 설정으로 검색 가능한 스냅샷으로 이동합니다.

{
  "policy": {
    "description": "Convert old indexes to searchable snapshots",
    "default_state": "active",
    "states": [
      {
        "name": "active",
        "actions": [],
        "transitions": [
          {
            "state_name": "archive",
            "conditions": {
              "min_index_age": "30d"
            }
          }
        ]
      },
      {
        "name": "archive",
        "actions": [
          {
            "snapshot": {
              "repository": "remote-repo",
              "snapshot": "{% raw %}{{ctx.index}}{% endraw %}"
            }
          },
          {
            "convert_index_to_remote": {
              "repository": "remote-repo",
              "snapshot": "{% raw %}{{ctx.index}}{% endraw %}",
              "include_aliases": true,
              "ignore_index_settings": "index.refresh_interval,index.number_of_replicas",
              "number_of_replicas": 0
            }
          }
        ],
        "transitions": []
      }
    ]
  }
}

{% include copy.html %}

인덱스 우선순위

특정 상태에 있는 인덱스의 우선순위를 설정합니다. 할당되지 않은 인덱스 샤드는 가능한 경우 우선순위 순서대로 복구됩니다. 우선순위 값이 높은 인덱스가 먼저 복구되고, 그다음에 우선순위 값이 낮은 인덱스가 복구됩니다.

index_priority 작업에는 다음 매개변수가 있습니다.

매개변수 설명 타입 필수 기본값
priority 인덱스가 상태에 진입하는 즉시의 우선순위입니다. Integer 예 1

다음 예제는 인덱스 우선순위를 50으로 설정합니다.

"actions": [
  {
    "index_priority": {
      "priority": 50
    }
  }
]

{% include copy.html %}

할당

특정 속성 세트가 있는 노드에 인덱스를 할당합니다(이와 같이). 예를 들어 require를 warm으로 설정하면 데이터가 "warm" 노드로만 이동합니다.

allocation 작업에는 다음 매개변수가 있습니다. require, include, exclude 중 하나 이상을 지정해야 합니다.

매개변수 설명 타입 필수
require 인덱스를 지정된 속성이 있는 노드에 할당합니다. Object 아니요
include 인덱스를 지정된 속성 중 하나라도 있는 노드에 할당합니다. Object 아니요
exclude 인덱스를 지정된 속성 중 하나라도 있는 노드에 할당하지 않습니다. Object 아니요
wait_for 인덱스를 지정된 속성이 있는 노드에 할당하기 전에 정책이 실행될 때까지 기다립니다. Boolean 아니요. 기본값은 false입니다.

다음 예제는 temp 속성이 warm으로 설정된 노드에 인덱스를 할당합니다.

"actions": [
  {
    "allocation": {
      "require": { "temp": "warm" }
    }
  }
]

{% include copy.html %}

롤업

인덱스 롤업을 사용하면 오래된 데이터를 요약된 인덱스로 롤업하여 데이터 세분성을 주기적으로 줄일 수 있습니다. ism_rollup 객체에서 작업을 정의합니다. 허용되는 필드는 인덱스 롤업 작업 생성 또는 업데이트를 참조하세요.

롤업 작업은 연속적 또는 비연속적일 수 있습니다. ISM 정책을 사용하여 생성된 롤업 작업은 비연속적일 수만 있습니다. {: .note }

다음 정책은 opensearch_dashboards_sample_data_ecommerce 필드를 target 인덱스의 시간별 버킷으로 롤업합니다.

PUT _plugins/_ism/policies/sample_rollup_policy
{
    "policy": {
        "description": "Sample rollup" ,
        "default_state": "rollup",
        "states": [
            {
                "name": "rollup",
                "actions": [
                    {
                        "rollup": {
                            "ism_rollup": {
                                "description": "Creating rollup through ISM",
                                "target_index": "target",
                                "target_index_settings":{
                                    "index.number_of_shards": 1,
                                    "index.number_of_replicas": 1,
                                    "index.codec": "best_compression"
                                 },
                                "page_size": 1000,
                                "dimensions": [
                                    {
                                        "date_histogram": {
                                            "fixed_interval": "60m",
                                            "source_field": "order_date",
                                            "target_field": "order_date",
                                            "timezone": "America/Los_Angeles"
                                        }
                                    },
                                    {
                                        "terms": {
                                            "source_field": "customer_gender",
                                            "target_field": "customer_gender"
                                        }
                                    },
                                    {
                                        "terms": {
                                            "source_field": "day_of_week",
                                            "target_field": "day_of_week"
                                        }
                                    }
                                ],
                                "metrics": [
                                    {
                                        "source_field": "taxless_total_price",
                                        "metrics": [
                                            {
                                                "sum": {}
                                            }
                                        ]
                                    },
                                    {
                                        "source_field": "total_quantity",
                                        "metrics": [
                                            {
                                                "avg": {}
                                            },
                                            {
                                                "max": {}
                                            }
                                        ]
                                    }
                                ]
                            }
                        }
                    }
                ],
                "transitions": []
            }
        ]
    }
}

{% include copy-curl.html %}

OpenSearch Dashboards에서 롤업 작업을 생성하려면 롤업 작업 생성을 참조하세요.

복제 중지

복제를 중지하고 팔로워 인덱스를 일반 인덱스로 변환합니다.

stop_replication 작업은 매개변수를 사용하지 않습니다.

{
  "stop_replication": {}
}

{% include copy.html %}

교차 클러스터 복제가 활성화되면 팔로워 인덱스는 읽기 전용이 되어 모든 쓰기 작업이 차단됩니다. 팔로워 클러스터에서 복제된 인덱스를 관리하려면 다른 쓰기 작업을 수행하기 전에 stop_replication 작업을 수행할 수 있습니다. 예를 들어, 먼저 stop_replication을 실행한 다음 delete 작업을 실행하여 인덱스를 삭제하는 정책을 정의할 수 있습니다.

보안이 활성화된 경우, 복제 중지 권한 외에도 stop_replication 작업을 사용하려면 indices:internal/plugins/replication/index/stop 권한이 있어야 합니다. {: .note}

검색 전용

인덱스가 search_only 모드로 전환되면 OpenSearch는 기본 샤드와 일반 복제본 샤드를 제거하고 쿼리 작업을 위한 검색 복제본은 유지합니다. 인덱스에 대한 모든 쓰기 작업이 차단됩니다. 이는 오래된 인덱스에 더 이상 쓰기 기능이 필요하지 않지만 검색 가능한 상태로 유지해야 하는 로그 수명 주기 관리에 유용합니다.

이 작업에는 다음 전제 조건이 필요합니다.

  • 클러스터에서 원격 스토어가 활성화되어 있어야 합니다.
  • 인덱스에서 세그먼트 복제가 활성화되어 있어야 합니다.
  • 인덱스에 검색 복제본이 구성되어 있어야 합니다.

검색 전용 모드 및 읽기/쓰기 분리에 대한 자세한 내용은 인덱스 및 검색 워크로드 분리를 참조하세요. {: .note}

다음 작업을 사용하여 인덱스를 검색 전용 모드로 설정합니다.

{
  "search_only": {}
}

{% include copy.html %}

인덱스가 이미 검색 전용 모드인 경우 작업은 변경 없이 성공적으로 완료됩니다.

ISM 정책 외부에서 Scale API를 호출하여 search_only 모드를 수동으로 활성화 또는 비활성화할 수 있습니다. {: .tip}

다음 예제 정책은 7일 후에 인덱스를 search_only 모드로 전환합니다.

PUT _plugins/_ism/policies/hot-warm-search-only
{
  "policy": {
    "description": "Move indexes to search-only mode after 7 days",
    "default_state": "hot",
    "states": [
      {
        "name": "hot",
        "actions": [],
        "transitions": [
          {
            "state_name": "warm",
            "conditions": {
              "min_index_age": "7d"
            }
          }
        ]
      },
      {
        "name": "warm",
        "actions": [
          {
            "search_only": {}
          }
        ],
        "transitions": []
      }
    ]
  }
}

{% include copy-curl.html %}

더 알아보기 (Learn more)