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

operations element

원문 보기 위키 갱신

출처: 문서

본문

operations 요소

operations 요소는 워크로드가 수행하는 OpenSearch API 작업과 해당 작업의 매개변수화 방식을 나열해요. 예를 들어, OpenSearch Benchmark가 문서를 쓸 수 있는 벤치마크 클러스터에 인덱스를 생성하는 create-index라는 작업을 정의할 수 있어요. 그런 다음 schedule 요소는 이러한 작업을 이름으로 참조하여 실행 순서를 지정해요.

bulk

bulk 작업 유형을 사용하면 bulk 요청을 작업으로 실행할 수 있어요.

사용법

다음 예시는 bulk-size가 5000인 bulk 작업 유형을 보여줘요:

{
  "name": "index-append",
  "operation-type": "bulk",
  "bulk-size": 5000
}

{% include copy.html %}

클라이언트 간 문서 분할

여러 clients가 있을 때 OpenSearch Benchmark는 설정된 클라이언트 수에 따라 각 문서를 분할해요. 여러 clients를 사용하면 벌크 인덱스 작업이 병렬화되지만 각 문서의 수집 순서는 유지되지 않아요. 예를 들어 clients가 2로 설정된 경우, 한 클라이언트는 문서의 처음부터 인덱싱하고 다른 클라이언트는 중간부터 인덱싱해요.

여러 문서나 코퍼스가 있는 경우 OpenSearch Benchmark는 두 가지 방식으로 모든 문서를 병렬로 인덱싱하려고 시도해요:

  1. 각 클라이언트는 코퍼스의 다른 지점에서 시작해요. 예를 들어, 2개의 코퍼스와 5개의 클라이언트가 있는 워크로드에서 클라이언트 1, 3, 5는 첫 번째 코퍼스로 시작하고, 클라이언트 2와 4는 두 번째 코퍼스로 시작해요.
  2. 각 클라이언트는 여러 문서에 할당돼요. 클라이언트 1은 첫 번째 코퍼스의 첫 번째 문서의 첫 번째 분할로 시작해요. 그런 다음 두 번째 코퍼스의 첫 번째 문서의 첫 번째 분할로 이동하는 식이에요.

구성 옵션

bulk 작업을 사용자 지정하려면 다음 옵션을 사용해요.

파라미터 필수 유형 설명
bulk-size 예 Number 벌크 요청에서 수집할 문서 수를 지정해요.
ingest-percentage 아니요 Range [0, 100] 인덱싱할 문서 코퍼스의 비율을 정의해요. 유효한 값은 0에서 100 사이의 숫자예요.
corpora 아니요 List 벌크 작업이 대상으로 해야 할 문서 코퍼스 이름을 정의해요. corpora 섹션에 여러 문서 코퍼스가 있고 벌크 요청 중에 모두 인덱싱하고 싶지 않은 경우에만 필요해요.
indices 아니요 List 벌크 인덱스 작업에서 사용할 인덱스를 정의해요. OpenSearch Benchmark는 일치하는 target-index가 있는 문서 파일만 선택해요.
batch-size 아니요 Number OpenSearch Benchmark가 동시에 읽는 문서 수를 정의해요. 이는 전문가 설정이며 매우 작은 벌크 크기에서 우발적인 병목 현상을 피하기 위한 것이에요. bulk-size가 1인 벤치마크를 수행하려면 더 높은 batch-size를 설정해야 해요.
pipeline 아니요 String 사용할 기존 인제스트 파이프라인을 정의해요.
conflicts 아니요 String 시뮬레이션할 인덱스 conflicts 유형을 정의해요. 지정하지 않으면 시뮬레이션되지 않아요. 유효한 값은 문서 ID를 순차적으로 증가하는 문서 ID로 대체하는 'sequential'과 문서 ID를 무작위 문서 ID로 대체하는 'random'이에요.
conflict-probability 아니요 Percentage 충돌이 있을 때 대체되는 문서의 비율을 정의해요. conflicts=sequential과 conflict-probability=0을 결합하면 OpenSearch Benchmark가 OpenSearch의 자동 ID 생성을 사용하는 대신 인덱스 ID를 직접 생성해요. 유효한 값은 0에서 100 사이의 숫자예요. 기본값은 25%예요.
on-conflict 아니요 String ID 충돌 시 OpenSearch가 index 액션을 사용할지 update 액션을 사용할지 결정해요. 기본값은 index이며, ID 충돌 시 새 인덱스를 생성해요.
recency 아니요 Number 0과 1 사이의 숫자를 사용하여 최신성을 나타내요. 1에 가까운 최신성은 충돌 ID를 더 최근 ID로 편향시켜요. 0에 가까운 최신성은 모든 ID를 ID 충돌 대상으로 고려해요.
detailed-results 아니요 Boolean 벌크 요청에 대해 더 자세한 메타데이터를 기록해요. OpenSearch Benchmark가 해당 벌크 응답을 더 자세히 분석하면 추가 오버헤드가 발생할 수 있으며, 이는 측정 결과를 왜곡할 수 있어요. OpenSearch Benchmark가 개별 벌크 요청 실패를 기록하려면 이 속성을 true로 설정해야 해요.
timeout 아니요 Duration OpenSearch가 각 액션에 대해 다음 작업의 처리를 완료할 때까지 기다리는 시간(분)을 정의해요: 자동 인덱스 생성, 동적 매핑 업데이트, 활성 샤드 대기. 기본값은 1m이에요.
refresh 아니요 String refresh Bulk API 쿼리 파라미터를 사용하는 벌크 요청에 대한 OpenSearch 새로고침 동작을 제어해요. 유효한 값은 대상 샤드를 백그라운드에서 새로고침하는 true, 영향을 받은 샤드가 새로고침될 때까지 벌크 요청을 차단하는 wait_for, 기본 새로고침 동작을 사용하는 false예요.

메타데이터

bulk 작업은 항상 다음 메타데이터를 반환해요:

  • index: 영향을 받은 인덱스의 이름이에요. 인덱스를 파생할 수 없으면 null을 반환해요.
  • weight: units로 표시되는 벌크 크기의 작업에 구애받지 않는 표현이에요.
  • unit: weight를 해석하는 데 사용되는 단위예요.
  • success: bulk 요청이 성공했는지 나타내는 불리언이에요.
  • success-count: 요청에 대해 성공적으로 처리된 벌크 항목 수예요. 이 값은 오류가 있거나 문서에 bulk-size가 지정된 경우 결정돼요.
  • error-count: 요청에 대해 실패한 벌크 항목 수예요.
  • took: 벌크 응답의 took 속성 값이에요.

detailed-results가 true이면 다음 메타데이터가 반환돼요:

  • ops: 작업 이름을 키(예: index, update, delete)로 하고 다양한 개수를 값으로 하는 중첩 문서예요. item-count에는 이 키에 대한 총 항목 수가 포함돼요. 또한 OpenSearch Benchmark는 각 결과에 대해 별도의 카운터를 반환해요. 예를 들어 생성된 항목 수 또는 삭제된 항목 수에 대한 결과예요.
  • shards_histogram: 각각 두 개의 키를 가진 해시 배열이에요. item-count 키에는 샤드 분포가 적용되는 항목 수가 포함돼요. shards 키에는 total, successful, failed 샤드의 실제 분포를 가진 해시가 포함돼요.
  • bulk-request-size-bytes: 벌크 요청 본문의 총 크기(바이트)예요.
  • total-document-size-bytes: 벌크 요청 본문 내 모든 문서의 총 크기(바이트)예요.

create-index

create-index 작업은 Create Index API를 실행해요. 다음 두 가지 인덱스 생성 모드를 지원해요:

  • 워크로드의 indices 섹션에 지정된 모든 인덱스 생성
  • 작업 자체 내에 정의된 특정 인덱스 하나 생성

사용법

다음 예시는 워크로드의 indices 섹션에 정의된 모든 인덱스를 생성해요. 워크로드에 정의된 모든 인덱스 설정을 사용하지만 샤드 수는 재정의해요:

{
  "name": "create-all-indices",
  "operation-type": "create-index",
  "settings": {
    "index.number_of_shards": 1
  },
  "request-params": {
    "wait_for_active_shards": "true"
  }
}

{% include copy.html %}

다음 예시는 작업 본문에 지정된 모든 인덱스 설정으로 새 인덱스를 생성해요:

{
  "name": "create-an-index",
  "operation-type": "create-index",
  "index": "people",
  "body": {
    "settings": {
      "index.number_of_shards": 0
    },
    "mappings": {
      "docs": {
        "properties": {
          "name": {
            "type": "text"
          }
        }
      }
    }
  }
}

{% include copy.html %}

구성 옵션

워크로드의 indices 섹션에서 모든 인덱스를 생성할 때 다음 옵션을 사용해요.

파라미터 필수 유형 설명
settings 아니요 Array 워크로드의 indices 섹션에 지정된 인덱스 설정과 병합할 추가 인덱스 설정을 지정해요.
request-params 아니요 List of settings Create Index API에서 허용하는 모든 요청 파라미터를 포함해요. OpenSearch Benchmark는 파라미터를 직렬화하지 않고 현재 상태로 전달해요.

작업에서 단일 인덱스를 생성할 때 다음 옵션을 사용해요.

파라미터 필수 유형 설명
index 예 String 인덱스 이름이에요.
body 아니요 Request body Create Index API의 요청 본문이에요. 자세한 내용은 Create Index API를 참조해요.
request-params 아니요 List of settings Create Index API에서 허용하는 모든 요청 파라미터를 포함해요. OpenSearch Benchmark는 파라미터를 직렬화하지 않고 현재 상태로 전달해요.

메타데이터

create-index 작업은 다음 메타데이터를 반환해요:

  • weight: 작업으로 생성된 인덱스 수예요.
  • unit: 항상 ops이며, 워크로드 내 작업 수를 나타내요.
  • success: 작업이 성공했는지 나타내는 불리언이에요.

delete-index

delete-index 작업은 Delete Index API를 실행해요. create-index 작업과 마찬가지로 워크로드의 indices 섹션에 있는 모든 인덱스를 삭제하거나 index 설정에 전달된 문자열을 기반으로 하나 이상의 인덱스를 삭제할 수 있어요.

사용법

다음 예시는 워크로드의 indices 섹션에 있는 모든 인덱스를 삭제해요:

{
  "name": "delete-all-indices",
  "operation-type": "delete-index"
}

{% include copy.html %}

다음 예시는 모든 logs_* 인덱스를 삭제해요:

{
  "name": "delete-logs",
  "operation-type": "delete-index",
  "index": "logs-*",
  "only-if-exists": false,
  "request-params": {
    "expand_wildcards": "all",
    "allow_no_indices": "true",
    "ignore_unavailable": "true"
  }
}

{% include copy.html %}

구성 옵션

워크로드의 indices 섹션에 표시된 모든 인덱스를 삭제할 때 다음 옵션을 사용해요.

파라미터 필수 유형 설명
only-if-exists 아니요 Boolean 기존 인덱스를 삭제할지 여부를 결정해요. 기본값은 true예요.
request-params 아니요 List of settings Create Index API에서 허용하는 모든 요청 파라미터를 포함해요. OpenSearch Benchmark는 파라미터를 직렬화하지 않고 현재 상태로 전달해요.

index 옵션에 표시된 패턴을 기반으로 하나 이상의 인덱스를 삭제하려면 다음 옵션을 사용해요.

파라미터 필수 유형 설명
index 예 String 삭제하려는 인덱스 또는 인덱스들이에요.
only-if-exists 아니요 Boolean 인덱스가 존재할 때 삭제할지 여부를 결정해요. 기본값은 true예요.
request-params 아니요 List of settings Create Index API에서 허용하는 모든 요청 파라미터를 포함해요. OpenSearch Benchmark는 파라미터를 직렬화하지 않고 현재 상태로 전달해요.

메타데이터

delete-index 작업은 다음 메타데이터를 반환해요:

  • weight: 작업으로 생성된 인덱스 수예요.
  • unit: 항상 ops이며, 워크로드 내 작업 수를 나타내요.
  • success: 작업이 성공했는지 나타내는 불리언이에요.

cluster-health

cluster-health 작업은 Cluster Health API를 실행해요. 이 API는 클러스터 상태를 확인하고 request-params에 설정된 파라미터에 따라 예상 상태를 반환해요. 예상치 못한 클러스터 상태가 반환되면 작업은 실패를 보고해요. OpenSearch Benchmark run 명령의 --on-error 옵션을 사용하여 상태 확인이 실패할 때 OpenSearch Benchmark가 어떻게 동작할지 제어할 수 있어요.

사용법

다음 예시는 log-* 인덱스에서 green 상태를 확인하는 cluster-health 작업을 생성해요:

{
  "name": "check-cluster-green",
  "operation-type": "cluster-health",
  "index": "logs-*",
  "request-params": {
    "wait_for_status": "green",
    "wait_for_no_relocating_shards": "true"
  },
  "retry-until-success": true
}

{% include copy.html %}

구성 옵션

cluster-health 작업에 다음 옵션을 사용해요.

파라미터 필수 유형 설명
index 예 String 평가하려는 인덱스 또는 인덱스들이에요.
request-params 아니요 List of settings Cluster Health API에서 허용하는 모든 요청 파라미터를 포함해요. OpenSearch Benchmark는 파라미터를 직렬화하지 않고 현재 상태로 전달해요.

메타데이터

cluster-health 작업은 다음 메타데이터를 반환해요:

  • weight: cluster-health 작업이 평가하는 인덱스 수예요. 작업이 인덱스당 한 번 실행되므로 항상 1이에요.
  • unit: 항상 ops이며, 워크로드 내 작업 수를 나타내요.
  • success: 작업이 성공했는지 나타내는 불리언이에요.
  • cluster-status: 현재 클러스터 상태예요.
  • relocating-shards: 현재 다른 노드로 재배치 중인 샤드 수예요.

refresh

refresh 작업은 Refresh API를 실행해요. 이 operation은 메타데이터를 반환하지 않아요.

사용법

다음 예시는 모든 logs-* 인덱스를 새로고침해요:

{
 "name": "refresh",
 "operation-type": "refresh",
 "index": "logs-*"
}

{% include copy.html %}

구성 옵션

refresh 작업은 다음 옵션을 사용해요.

파라미터 필수 유형 설명
index 아니요 String 새로고침할 인덱스 또는 데이터 스트림의 이름이에요.

search 작업은 Search API를 실행해요. 이 API를 사용해서 OpenSearch Benchmark 인덱스에서 쿼리를 실행할 수 있어요.

사용법

다음 예제는 search 작업 안에서 match_all 쿼리를 실행해요:

{
  "name": "default",
  "operation-type": "search",
  "body": {
    "query": {
      "match_all": {}
    }
  },
  "request-params": {
    "_source_include": "some_field",
    "analyze_wildcard": "false"
  }
}

{% include copy.html %}

설정 옵션

search 작업은 다음 옵션을 사용해요.

매개변수 필수 여부 유형 설명
index 아니요 String 쿼리가 대상으로 하는 인덱스 또는 데이터 스트림이에요. 이 옵션은 indices 섹션에 인덱스가 두 개 이상 있을 때만 필요해요. 그렇지 않으면 OpenSearch Benchmark가 사용할 인덱스나 데이터 스트림을 자동으로 유추해요. 워크로드의 모든 인덱스를 대상으로 쿼리하려면 "index": "_all"을 지정하세요.
cache 아니요 Boolean 쿼리 요청 캐시를 사용할지 여부를 지정해요. OpenSearch Benchmark는 값을 정의하지 않아요. 기본값은 벤치마크 대상 설정과 OpenSearch 버전에 따라 달라져요.
request-params 아니요 List of settings Search API에서 허용하는 요청 매개변수를 포함해요.
body 예 Request body 사용할 쿼리와 쿼리 매개변수를 나타내요.
detailed-results 아니요 Boolean 쿼리에 대한 더 자세한 메타데이터를 기록해요. true로 설정하면 추가 오버헤드가 발생할 수 있어 측정 결과가 왜곡될 수 있어요. 이 옵션은 scroll 쿼리와 함께 사용할 수 없어요.
results-per-page 아니요 Integer 페이지당 검색할 문서 수를 지정해요. Search API의 size 매개변수에 매핑되며, 스크롤 및 비스크롤 검색에 사용할 수 있어요. 기본값은 10이에요.

메타데이터

다음 메타데이터는 항상 반환돼요:

  • weight: 작업의 '가중치'예요. 일반 쿼리는 항상 1이고, 스크롤 쿼리는 검색된 페이지 수예요.
  • unit: 가중치를 해석하는 단위예요. 일반 쿼리는 ops, 스크롤 쿼리는 pages예요.
  • success: 쿼리 성공 여부를 나타내는 Boolean 값이에요.

detailed-results가 true로 설정되면 다음 메타데이터도 반환돼요:

  • hits: 쿼리의 총 히트 수예요.
  • hits_relation: 히트 수가 정확한지(eq) 또는 실제 히트 수의 하한인지(gte)를 나타내요.
  • timed_out: 쿼리가 시간 초과되었는지 여부예요. 스크롤 쿼리의 경우, 발행된 쿼리 중 하나라도 시간 초과되었으면 이 플래그는 true예요.
  • took: 쿼리 응답의 took 속성 값이에요. 스크롤 쿼리의 경우, 모든 쿼리 응답의 took 값을 합한 값이에요.

paginated-search 작업은 search_after 매개변수를 사용하여 페이지가 매겨진 검색 요청을 순차적으로 실행해요. search와 동일한 옵션을 허용하며, 추가로 pages 옵션을 사용해 검색할 페이지 수를 제어해요.

설정 옵션

search에 나열된 옵션 외에:

매개변수 필수 여부 유형 설명
pages 예 Integer 검색할 최대 페이지 수예요. 쿼리가 요청된 페이지 수보다 적은 결과를 반환하면 작업이 일찍 종료돼요.

메타데이터

search가 반환하는 메타데이터 외에:

  • pages: 검색된 총 페이지 수예요.

scroll-search 작업은 스크롤 검색을 실행해요. search와 동일한 옵션을 허용하며, 추가로 pages 옵션을 사용해 가져올 스크롤 페이지 수를 제어해요.

설정 옵션

search에 나열된 옵션 외에:

매개변수 필수 여부 유형 설명
pages 예 Integer 검색할 최대 스크롤 페이지 수예요. 이 수에 도달하기 전에 스크롤이 소진되면 작업이 일찍 종료돼요.

메타데이터

search가 반환하는 메타데이터 외에:

  • pages: 검색된 총 스크롤 페이지 수예요.

force-merge

force-merge 작업은 Force Merge API를 실행해요.

사용법

{
  "name": "force-merge",
  "operation-type": "force-merge",
  "index": "_all",
  "request-params": {
    "max_num_segments": 1
  }
}

{% include copy.html %}

설정 옵션

매개변수 필수 여부 유형 설명
index 아니요 String 강제 병합할 인덱스예요. 생략하면 호출이 기본 클라이언트의 기본 동작으로 넘어가며, 모든 인덱스를 대상으로 해요.
max-num-segments 아니요 Integer 샤드당 세그먼트 목표 수예요. Force Merge API에 max_num_segments로 전달돼요.
mode 아니요 String polling으로 설정하면 강제 병합을 비동기적으로 실행하고 Tasks API를 폴링하여 완료될 때까지 기다려요. 생략하면 동기적으로 대기하며, 대규모 인덱스에서는 시간 초과될 수 있어요.
poll-period 조건부 Number mode가 polling일 때 필요해요: 상태 폴링 사이의 시간(초)이에요. mode: polling이 설정되었는데 이 값이 없으면 오류가 발생해요.
request-params 아니요 Object Force Merge API에 전달되는 추가 요청 매개변수예요.

이것은 관리 작업이에요. 메트릭은 기본적으로 보고되지 않아요. include-in-reporting을 true로 설정하면 보고를 강제할 수 있어요.

index-stats

index-stats 작업은 Index Stats API를 실행해요.

사용법

{
  "name": "index-stats",
  "operation-type": "index-stats",
  "index": "_all",
  "condition": {
    "path": "_all.total.merges.current",
    "expected-value": 0
  },
  "retry-until-success": true
}

{% include copy.html %}

설정 옵션

매개변수 필수 여부 유형 설명
index 아니요 String 통계를 검색할 인덱스예요. 기본값은 _all이에요.
condition 아니요 Object 응답에서 확인할 조건이에요. path(응답의 점 표기법 경로)와 expected-value를 포함해요.
request-params 아니요 Object Stats API에 전달되는 요청 매개변수예요.

node-stats

node-stats 작업은 Nodes Stats API를 실행해요.

사용법

{
  "name": "node-stats",
  "operation-type": "node-stats"
}

{% include copy.html %}

설정 옵션

매개변수 필수 여부 유형 설명
request-timeout 아니요 Number Nodes Stats 요청에 대한 클라이언트 측 시간 제한(초)이에요.

vector-search 작업은 k-NN 벡터 검색 쿼리를 실행하고, 선택적으로 결과를 실제 이웃(ground truth neighbors)과 비교하여 재현율(recall) 메트릭을 계산해요.

사용법

{
  "name": "knn-search",
  "operation-type": "vector-search",
  "index": "vectors",
  "k": 100,
  "body": {
    "query": {
      "knn": {
        "embedding": {
          "vector": [0.1, 0.2, 0.3],
          "k": 100
        }
      }
    }
  }
}

{% include copy.html %}

설정 옵션

매개변수 필수 여부 유형 설명
index 예 String 대상 인덱스예요. 필수 항목이에요. 생략하면 기본 search 실행기에서 오류가 발생해요.
body 예 Object k-NN 쿼리를 포함하는 검색 요청 본문이에요.
k 아니요 Integer 검색할 최근접 이웃의 수예요. 재현율 계산에 사용돼요.
detailed-results 아니요 Boolean 자세한 메타데이터를 기록할지 여부예요.
calculate-recall 아니요 Boolean 실제 이웃과 비교하여 recall@k 및 recall@1을 계산할지 여부예요. 기본값은 true예요.
neighbors 아니요 Array 재현율 계산을 위한 실제 이웃 ID 배열이에요. 일반적으로 워크로드가 런타임에 제공해요.

메타데이터

  • weight: 항상 1이에요.
  • unit: 항상 ops예요.
  • success: 검색 성공 여부예요.
  • recall@k: k에서의 재현율(실제 이웃이 제공된 경우)이에요.
  • recall@1: 1에서의 재현율(실제 이웃이 제공된 경우)이에요.

bulk-vector-data-set

bulk-vector-data-set 작업은 HDF5 또는 BigANN 데이터셋 파일에서 벡터 데이터를 벌크 인덱싱해요. 부분 실패 시 개별 문서 재시도를 지원해요.

사용법

{
  "name": "bulk-vectors",
  "operation-type": "bulk-vector-data-set",
  "bulk-size": 500,
  "index": "vectors"
}

{% include copy.html %}

설정 옵션

매개변수 필수 여부 유형 설명
bulk-size 아니요 Integer 벌크 요청당 문서 수예요.
index 아니요 String 대상 인덱스예요.
retries 아니요 Integer 초기 요청 실패 후 재시도 횟수예요. 기본값은 0(재시도 없음)이에요. 실패한 각 문서는 재시도 시 다시 제출되며, 연결 시간 초과도 재시도를 트리거해요.
retry-wait-period 아니요 Number 재시도 사이의 초기 대기 시간(초)이에요. 기본값은 0.5예요.
retry-max-wait-period 아니요 Number 재시도 사이의 최대 대기 시간(초)이에요. 지수 백오프가 이 값으로 제한돼요. 기본값은 60이에요.
detailed-results 아니요 Boolean 문서별 성공/실패 메타데이터를 자세히 기록해요. 기본값은 true예요.
action-metadata-present 아니요 Boolean 벌크 본문에 액션 메타데이터 줄이 포함되어 있는지 여부예요. 기본값은 true예요.
unit 아니요 String weight에 대해 보고되는 단위예요. 기본값은 docs예요.

put-pipeline

put-pipeline 작업은 수집 파이프라인을 생성하거나 업데이트해요.

사용법

{
  "name": "define-pipeline",
  "operation-type": "put-pipeline",
  "id": "my-pipeline",
  "body": {
    "description": "My ingest pipeline",
    "processors": [
      {
        "set": {
          "field": "ingest_time",
          "value": {% raw %}"{{_ingest.timestamp}}"{% endraw %}
        }
      }
    ]
  }
}

{% include copy.html %}

설정 옵션

매개변수 필수 여부 유형 설명
id 예 String 파이프라인 ID예요.
body 예 Object 파이프라인 정의예요.

이것은 관리 작업이에요. 메트릭은 기본적으로 보고되지 않아요.

delete-pipeline

delete-pipeline 작업은 수집 파이프라인을 삭제해요.

설정 옵션

매개변수 필수 여부 유형 설명
id 예 String 삭제할 파이프라인 ID예요.

이것은 관리 작업이에요. 메트릭은 기본적으로 보고되지 않아요.

create-search-pipeline

create-search-pipeline 작업은 검색 파이프라인을 생성해요.

설정 옵션

매개변수 필수 여부 유형 설명
id 예 String 검색 파이프라인 ID예요.
body 예 Object 검색 파이프라인 정의예요.

이것은 관리 작업이에요. 메트릭은 기본적으로 보고되지 않아요.

update-concurrent-segment-search-settings

update-concurrent-segment-search-settings 작업은 동시 세그먼트 검색 클러스터 설정과 선택적으로 최대 슬라이스 수를 전환해요. search.concurrent_segment_search.enabled(및 search.concurrent.max_slice_count가 제공된 경우 함께)를 영구 클러스터 설정으로 업데이트해요.

설정 옵션

매개변수 필수 여부 유형 설명
enable 아니요 Boolean 동시 세그먼트 검색 활성화 여부예요. 기본값은 false예요.
max_slice_count 아니요 Integer 샤드당 최대 슬라이스 수예요. 생략하면 설정이 변경되지 않은 상태로 남아요.

put-settings

put-settings 작업은 클러스터 설정을 업데이트해요.

사용법

{
  "name": "increase-watermarks",
  "operation-type": "put-settings",
  "body": {
    "transient": {
      "cluster.routing.allocation.disk.watermark.low": "95%"
    }
  }
}

{% include copy.html %}

설정 옵션

매개변수 필수 여부 유형 설명
body 예 Object 적용할 클러스터 설정이에요.

이것은 관리 작업이에요. 메트릭은 기본적으로 보고되지 않아요.

create-data-stream

create-data-stream 작업은 하나 이상의 데이터 스트림을 생성해요.

설정 옵션

매개변수 필수 여부 유형 설명
data-streams 예 List 생성할 데이터 스트림 이름 목록이에요.
request-params 예 Object Create Data Stream API로 전달되는 요청 매개변수예요. 필요하지 않으면 빈 객체({})를 전달하세요.

delete-data-stream

delete-data-stream 작업은 하나 이상의 데이터 스트림을 삭제해요.

설정 옵션

매개변수 필수 여부 유형 설명
data-streams 예 List 삭제할 데이터 스트림 이름 목록이에요.
only-if-exists 예 Boolean true이면 존재하는 데이터 스트림만 삭제하고, false이면 각각 삭제를 시도하고 HTTP 404 응답은 무시해요.
request-params 예 Object Delete Data Stream API로 전달되는 요청 매개변수예요. 필요하지 않으면 빈 객체({})를 전달하세요.

create-composable-template

create-composable-template 작업은 하나 이상의 구성 가능한 인덱스 템플릿을 생성해요.

설정 옵션

매개변수 필수 여부 유형 설명
templates 예 List 생성할 [template-name, body] 쌍의 목록이에요.
request-params 예 Object API로 전달되는 요청 매개변수예요. 필요하지 않으면 빈 객체({})를 전달하세요.

delete-composable-template

delete-composable-template 작업은 하나 이상의 구성 가능한 인덱스 템플릿과 선택적으로 일치하는 인덱스를 삭제합니다.

구성 옵션

매개변수 필수 유형 설명
templates 예 List [template-name, delete-matching-indices, index-pattern] 세 쌍의 목록입니다. delete-matching-indices가 true이고 index-pattern이 비어 있지 않으면 패턴과 일치하는 인덱스도 삭제됩니다.
only-if-exists 예 Boolean true이면 존재하는 템플릿만 삭제하고, false이면 각 템플릿을 삭제하려 시도하고 HTTP 404 응답은 무시합니다.
request-params 예 Object API로 전달되는 요청 매개변수입니다. 필요하지 않으면 빈 객체({})를 전달하세요.

create-component-template

create-component-template 작업은 하나 이상의 컴포넌트 템플릿을 생성합니다.

구성 옵션

매개변수 필수 유형 설명
templates 예 List 생성할 [template-name, body] 쌍의 목록입니다.
request-params 예 Object API로 전달되는 요청 매개변수입니다. 필요하지 않으면 빈 객체({})를 전달하세요.

delete-component-template

delete-component-template 작업은 하나 이상의 컴포넌트 템플릿을 삭제합니다.

구성 옵션

매개변수 필수 유형 설명
templates 예 List 삭제할 컴포넌트 템플릿 이름의 목록입니다.
only-if-exists 예 Boolean true이면 존재하는 템플릿만 삭제하고, false이면 각 템플릿을 삭제하려 시도하고 HTTP 404 응답은 무시합니다.
request-params 예 Object API로 전달되는 요청 매개변수입니다. 필요하지 않으면 빈 객체({})를 전달하세요.

create-index-template

create-index-template 작업은 하나 이상의 레거시 인덱스 템플릿을 생성합니다.

구성 옵션

매개변수 필수 유형 설명
templates 예 List 생성할 [template-name, body] 쌍의 목록입니다.
request-params 아니오 Object 추가 요청 매개변수입니다.

delete-index-template

delete-index-template 작업은 하나 이상의 레거시 인덱스 템플릿과 선택적으로 일치하는 인덱스를 삭제합니다.

구성 옵션

매개변수 필수 유형 설명
templates 예 List [template-name, delete-matching-indices, index-pattern] 세 쌍의 목록입니다.
only-if-exists 아니오 Boolean true이면 존재하는 템플릿만 삭제합니다. 기본값은 false입니다.
request-params 아니오 Object 추가 요청 매개변수입니다.

shrink-index

shrink-index 작업은 Shrink Index API를 사용하여 인덱스의 기본 샤드 수를 줄입니다.

사용법

{
  "name": "shrink-index",
  "operation-type": "shrink-index",
  "source-index": "my-index",
  "target-index": "my-index-shrunk",
  "target-body": {
    "settings": {
      "index.number_of_shards": 1,
      "index.codec": "best_compression"
    }
  }
}

{% include copy.html %}

구성 옵션

매개변수 필수 유형 설명
source-index 예 String 축소할 소스 인덱스(또는 와일드카드 패턴)입니다.
target-index 예 String 축소된 인덱스의 이름입니다. source-index가 여러 인덱스와 일치하면 일치하는 접미사가 이 이름에 추가됩니다.
target-body 예 Object 대상 인덱스의 설정과 매핑입니다.
shrink-node 아니오 String 축소 전에 소스 샤드를 할당할 노드입니다. 생략하면 임의의 데이터 노드가 선택됩니다.

create-snapshot-repository

create-snapshot-repository 작업은 스냅샷 리포지토리를 생성합니다.

구성 옵션

매개변수 필수 유형 설명
repository 예 String 리포지토리 이름입니다.
body 예 Object 리포지토리 정의(유형, 설정)입니다.
request-params 아니오 Object 추가 요청 매개변수입니다.

delete-snapshot-repository

delete-snapshot-repository 작업은 스냅샷 리포지토리를 삭제합니다.

구성 옵션

매개변수 필수 유형 설명
repository 예 String 삭제할 리포지토리 이름입니다.

create-snapshot

create-snapshot 작업은 스냅샷을 생성합니다.

구성 옵션

매개변수 필수 유형 설명
repository 예 String 리포지토리 이름입니다.
snapshot 예 String 스냅샷 이름입니다.
body 예 Object 스냅샷 정의입니다.
wait-for-completion 아니오 Boolean 반환 전에 스냅샷이 완료될 때까지 기다릴지 여부입니다. 기본값은 false입니다. 스냅샷 기간을 정확하게 측정하려면 이 값을 false로 두고 wait-for-snapshot-create를 후속 작업으로 사용하세요.
request-params 아니오 Object 추가 요청 매개변수입니다.

wait-for-snapshot-create

wait-for-snapshot-create 작업은 스냅샷이 SUCCESS 상태가 될 때까지 스냅샷 상태를 폴링합니다. 스냅샷이 FAILED로 끝나면 작업은 어설션 오류를 발생시킵니다. 보고되는 메트릭에는 스냅샷 크기(바이트), 처리량 및 기간이 포함됩니다.

구성 옵션

매개변수 필수 유형 설명
repository 예 String 리포지토리 이름입니다.
snapshot 예 String 스냅샷 이름입니다.
completion-recheck-wait-period 아니오 Number 상태 폴링 간격(초)입니다. 기본값은 1입니다.

restore-snapshot

restore-snapshot 작업은 스냅샷을 복원합니다.

구성 옵션

매개변수 필수 유형 설명
repository 예 String 리포지토리 이름입니다.
snapshot 예 String 스냅샷 이름입니다.
body 아니오 Object 복원 요청 본문입니다.
wait-for-completion 아니오 Boolean 반환 전에 복원이 완료될 때까지 기다릴지 여부입니다. 기본값은 false입니다. 복원 기간을 측정하려면 wait-for-recovery와 함께 사용하세요.
request-params 아니오 Object 추가 요청 매개변수입니다.

wait-for-recovery

wait-for-recovery 작업은 Index Recovery API를 폴링하여 인덱스 복구가 완료될 때까지 기다립니다.

구성 옵션

매개변수 필수 유형 설명
index 예 String 복구를 모니터링할 인덱스입니다.
completion-recheck-wait-period 아니오 Number 복구 폴링 간격(초)입니다. 기본값은 1입니다.

submit-async-search 작업은 비동기 검색 요청을 제출하고 반환된 비동기 검색 ID를 작업 name 아래에 저장하여 동일한 복합 작업 내의 후속 작업이 이를 가져오거나 삭제할 수 있도록 합니다.

구성 옵션

매개변수 필수 유형 설명
name 예 String 작업 이름입니다. 다른 작업에서 이 이름을 참조하여 결과 비동기 검색 ID를 조회합니다.
body 예 Object 검색 요청 본문입니다.
index 아니오 String 대상 인덱스입니다.
request-params 아니오 Object 비동기 검색 API로 전달되는 추가 요청 매개변수입니다.

get-async-search 작업은 이전에 제출된 하나 이상의 비동기 검색 결과를 검색합니다. 이 작업은 참조된 모든 검색이 완료된 경우에만 성공합니다(is_running: false).

구성 옵션

매개변수 필수 유형 설명
retrieve-results-for 예 String 또는 List 결과를 검색할 submit-async-search 작업의 이름(또는 이름 목록)입니다.
request-params 아니오 Object 비동기 검색 Get API로 전달되는 추가 요청 매개변수입니다.

delete-async-search 작업은 하나 이상의 비동기 검색 결과를 삭제합니다.

구성 옵션

매개변수 필수 유형 설명
delete-results-for 예 String 또는 List 결과를 삭제할 submit-async-search 작업의 이름(또는 이름 목록)입니다.

create-point-in-time

create-point-in-time 작업은 인덱스에 대한 Point in Time (PIT)를 생성합니다. 결과 PIT ID는 작업 name 아래에 저장되어 동일한 복합 작업 내의 후속 작업이 이를 참조할 수 있습니다.

구성 옵션

매개변수 필수 유형 설명
name 예 String 작업 이름입니다. 다른 작업에서 이 이름을 참조하여 결과 PIT ID를 재사용합니다.
index 예 String 대상 인덱스입니다.
keep-alive 아니오 String PIT를 유지할 시간입니다(예: 5m). 기본값은 1m입니다.
request-params 아니오 Object Create PIT API로 전달되는 추가 요청 매개변수입니다.

delete-point-in-time

delete-point-in-time 작업은 하나 이상의 PIT를 삭제합니다. with-point-in-time-from이 설정되면 해당 이름의 작업으로 생성된 PIT만 삭제되고, 그렇지 않으면 클러스터의 모든 PIT가 삭제됩니다.

구성 옵션

매개변수 필수 유형 설명
with-point-in-time-from 아니오 String 삭제할 PIT를 생성한 create-point-in-time 작업의 이름입니다. 생략하면 모든 PIT가 삭제됩니다.
request-params 아니오 Object Delete PIT API로 전달되는 추가 요청 매개변수입니다.

list-all-point-in-time

list-all-point-in-time 작업은 클러스터의 모든 활성 PIT를 나열합니다.

구성 옵션

매개변수 필수 유형 설명
request-params 아니오 Object List PIT API로 전달되는 추가 요청 매개변수입니다.

create-transform

create-transform 작업은 인덱스 트랜스폼을 생성합니다.

구성 옵션

매개변수 필수 유형 설명
transform-id 예 String 트랜스폼 ID입니다.
body 예 Object 트랜스폼 정의입니다.

start-transform

start-transform 작업은 이전에 생성된 트랜스폼을 시작합니다.

구성 옵션

매개변수 필수 유형 설명
transform-id 예 String 시작할 트랜스폼 ID입니다.
timeout 아니오 Number 시작 요청에 대한 선택적 클라이언트 측 타임아웃입니다.

wait-for-transform

wait-for-transform 작업은 트랜스폼이 다음 체크포인트에 도달하거나(또는 옵션에 따라 중지될 때까지) 트랜스폼 상태를 폴링합니다.

구성 옵션

매개변수 필수 유형 설명
transform-id 예 String 모니터링할 트랜스폼 ID입니다.
force 아니오 Boolean 폴링 완료 시 트랜스폼을 강제로 중지합니다. 기본값은 false입니다.
wait-for-checkpoint 아니오 Boolean 모든 데이터가 다음 체크포인트를 통해 처리될 때까지 기다립니다. 기본값은 true입니다.
wait-for-completion 아니오 Boolean 트랜스폼이 완전히 중지될 때까지 차단합니다. 기본값은 true입니다.
transform-timeout 아니오 Number 전체 트랜스폼 런타임 타임아웃(초)입니다. 기본값은 3600입니다.
poll-interval 아니오 Number 트랜스폼 통계를 폴링하는 간격(초)입니다. 기본값은 0.5입니다.

delete-transform

delete-transform 작업은 이전에 생성된 트랜스폼을 삭제합니다. 존재하지 않는 트랜스폼(HTTP 404)은 무시되므로 이 작업은 정리 단계로 안전하게 사용할 수 있습니다.

구성 옵션

매개변수 필수 유형 설명
transform-id 예 String 삭제할 트랜스폼 ID입니다.
force 아니오 Boolean true이면 현재 실행 중인 경우에도 트랜스폼을 삭제합니다. 기본값은 false입니다.

train-knn-model

train-knn-model 작업은 Train Model API를 사용하여 k-NN 모델을 학습시키고 학습이 완료될 때까지 폴링해요.

Configuration options

Parameter Required Type Description
body Yes Object 학습 요청 본문이에요. 본문 매개변수는 Train Model API를 참조해요.
model_id Yes String 학습할 모델 ID예요.
retries No Integer 포기하기 전까지 폴링 재시도 최대 횟수예요. 기본값은 1000이에요.
poll_period No Number 상태 폴링 간격(초)이에요. 기본값은 0.5예요.

delete-knn-model

delete-knn-model 작업은 학습된 k-NN 모델을 삭제해요.

Configuration options

Parameter Required Type Description
model_id Yes String 삭제할 모델 ID예요.
ignore-if-model-does-not-exist No Boolean true이면 모델이 없을 때(HTTP 404)를 성공으로 간주해요. 기본값은 false예요.

register-ml-model

register-ml-model 작업은 ML Commons API를 사용하여 머신러닝 모델을 등록해요. 러너는 먼저 일치하는 이름의 모델을 검색하고, 이미 존재하면 기존 모델 ID를 재사용해요. 그렇지 않으면 새 등록 요청을 제출하고 완료될 때까지 폴링해요. 결과 모델 ID는 작업 디렉터리의 model_id.json에 기록되어 이후 작업에서 사용할 수 있어요.

요청 본문은 두 가지 방법 중 하나로 제공할 수 있어요. model-config-file을 디스크 경로로 설정하거나, model-name, model-version, model-format을 설정하고 OpenSearch Benchmark가 본문을 조합하도록 할 수 있어요.

Configuration options

Parameter Required Type Description
model-config-file No String 전체 등록 본문이 포함된 JSON 파일의 경로예요. 설정하면 다른 본문 필드는 무시돼요.
model-name No String 모델 이름이에요. model-config-file이 설정되지 않았을 때 본문을 조합하는 데 사용돼요.
model-version No String 모델 버전이에요.
model-format No String 모델 형식이에요(예: TORCH_SCRIPT).
timeout No Number 등록 작업 완료를 기다리는 최대 시간(초)이에요. 기본값은 120이에요.

deploy-ml-model

deploy-ml-model 작업은 이전에 등록된 ML 모델을 배포(로드)해요. 모델 ID는 작업 디렉터리의 model_id.json에서 읽어오므로(일반적으로 이전 register-ml-model 작업에서 기록), 이 작업은 필수 매개변수가 없어요.

Configuration options

Parameter Required Type Description
timeout No Number 배포 작업 완료를 기다리는 최대 시간(초)이에요. 기본값은 120이에요.

create-ml-connector

create-ml-connector 작업은 원격 모델 통합을 위한 ML connector를 생성해요.

Configuration options

Parameter Required Type Description
body Yes Object 커넥터 정의예요.

delete-ml-connector

delete-ml-connector 작업은 이름으로 ML 커넥터를 찾아 삭제해요. 제공된 이름과 일치하는 커넥터가 없으면 아무 작업도 수행하지 않아요.

Configuration options

Parameter Required Type Description
connector_name Yes String 찾아서 삭제할 커넥터 이름이에요.

register-remote-ml-model

register-remote-ml-model 작업은 ML connector로 지원되는 원격 ML 모델을 등록해요. 등록 작업이 완료될 때까지 폴링한 다음 결과 모델 ID를 작업 디렉터리의 model_id.json에 기록하여 이후 작업에서 사용할 수 있게 해요.

요청 본문에 connector_id가 설정되지 않으면 OpenSearch Benchmark는 작업 디렉터리의 connector_id.json에서 읽어와요(일반적으로 이전 create-ml-connector 작업에서 기록).

Configuration options

Parameter Required Type Description
body Yes Object 모델 등록 요청 본문이에요. connector_id가 생략되면 connector_id.json에서 로드돼요.

delete-ml-model

delete-ml-model 작업은 이름으로 모델을 찾아 현재 배포된 모델을 배포 해제한 다음 삭제해요. 동일한 이름의 모델이 여러 개(예: 버전별) 있으면 모두 삭제돼요.

Configuration options

Parameter Required Type Description
model-name Yes String 찾아서 삭제할 모델 이름이에요.
number-of-hits-to-return No Integer 검색 쿼리에서 가져올 일치하는 모델의 최대 개수예요. 기본값은 1000이에요.
undeploy-timeout No Number 삭제 전 각 모델이 완전히 배포 해제될 때까지 기다리는 시간(초)이에요. 기본값은 10이에요.

raw-request

raw-request 작업은 OpenSearch에 임의의 HTTP 요청을 보내요. 전용 작업 유형으로 처리되지 않는 작업에 사용해요.

Usage

{
  "name": "check-shard-count",
  "operation-type": "raw-request",
  "method": "GET",
  "path": "/_cat/shards?v",
  "body": {}
}

{% include copy.html %}

Configuration options

Parameter Required Type Description
method No String HTTP 메서드(GET, POST, PUT, DELETE)예요. 기본값은 GET이에요.
path Yes String URL 경로예요. /로 시작해야 해요.
body No Object 요청 본문이에요.
request-params No Object 쿼리 문자열 매개변수예요.
headers No Object 포함할 HTTP 헤더예요.
ignore No List 무시할 HTTP 상태 코드예요(예: [404]).

sleep

sleep 작업은 지정된 시간 동안 실행을 일시 중지해요.

Usage

{
  "name": "wait-before-search",
  "operation-type": "sleep",
  "duration": 30
}

{% include copy.html %}

Configuration options

Parameter Required Type Description
duration Yes Number 일시 중지 시간(초)이에요.

composite

composite 작업은 내부 작업의 구조화된 그룹을 단일 측정 단위로 실행하며, 선택적으로 병렬 하위 스트림을 사용할 수 있어요. 여러 요청이 상태를 공유해야 하거나(예: PIT 생성, 검색, 삭제) 소규모 워크플로우의 종단 간 시간을 측정하려는 경우 유용해요.

composite 내부에는 일부 작업 유형만 사용할 수 있어요: create-point-in-time, delete-point-in-time, list-all-point-in-time, search, paginated-search, raw-request, sleep, submit-async-search, get-async-search, delete-async-search. 중첩된 stream 블록은 병렬로 실행돼요.

Usage

{
  "name": "pit-search-workflow",
  "operation-type": "composite",
  "requests": [
    { "operation-type": "create-point-in-time", "name": "pit", "index": "my-index" },
    { "operation-type": "search", "body": { "query": { "match_all": {} } } },
    { "operation-type": "delete-point-in-time", "with-point-in-time-from": "pit" }
  ]
}

{% include copy.html %}

Configuration options

Parameter Required Type Description
requests Yes List 실행할 내부 작업 또는 stream 블록의 목록이에요.
max-connections No Integer 컴포지트 전체에서 동시에 처리 중인 요청 수의 상한이에요. 기본값은 제한 없음이에요.

produce-stream-message

produce-stream-message 작업은 스트리밍 수집 벤치마크를 위해 구성된 message-producer(예: Kafka 프로듀서)에 메시지를 게시해요. body는 줄바꿈으로 분할되며, 메타데이터가 아닌 각 줄이 개별 메시지로 전송돼요. 프로듀서는 워크로드 또는 클러스터 수준에서 구성되며, 러너 자체는 프로듀서 참조와 메시지 페이로드만 사용해요.

Configuration options

Parameter Required Type Description
message-producer Yes Producer 메시지를 보내는 데 사용되는 프로듀서 인스턴스예요(런타임에 워크로드가 확인).
body Yes String or Bytes 줄바꿈으로 구분된 메시지 페이로드예요. 인덱스 메타데이터 줄({"index": {"_index": ...}})은 건너뛰어요.

proto-bulk

proto-bulk 작업은 HTTP REST 대신 gRPC 전송을 사용하여 벌크 인덱스 요청을 보내요. 대상 클러스터에서 gRPC가 활성화되어 있어야 해요.

Configuration options

bulk과 동일하지만 HTTP를 통한 JSON 대신 gRPC 직렬화(Protocol Buffers)를 사용해요. --grpc-target-hosts를 사용하여 gRPC 엔드포인트를 지정해요.

proto-search 작업은 gRPC 전송을 사용하여 검색 요청을 보내요.

Configuration options

search와 동일하지만 gRPC를 사용해요. --grpc-target-hosts를 사용하여 gRPC 엔드포인트를 지정해요.

proto-vector-search 작업은 gRPC 전송을 사용하여 벡터 검색 요청을 보내요.

Configuration options

vector-search와 동일하지만 gRPC를 사용해요. --grpc-target-hosts를 사용하여 gRPC 엔드포인트를 지정해요.

proto-bulk-vector-data-set

proto-bulk-vector-data-set 작업은 gRPC 전송을 사용하여 벡터 데이터 세트를 벌크 인덱싱해요. bulk-vector-data-set의 gRPC 대응 작업이에요.

Configuration options

bulk-vector-data-set과 동일하지만 HTTP를 통한 JSON 대신 gRPC 직렬화(Protocol Buffers)를 사용해요. --grpc-target-hosts를 사용하여 gRPC 엔드포인트를 지정해요.

더 알아보기 (Learn more)