Rethrottle API

Rethrottle API

다음 API를 사용하면 이미 실행 중인 _reindex, _update_by_query, _delete_by_query 작업의 requests_per_second를 동적으로 변경할 수 있어요.

도입 버전 1.0

엔드포인트

POST /_delete_by_query/{task_id}/_rethrottle
POST /_reindex/{task_id}/_rethrottle
POST /_update_by_query/{task_id}/_rethrottle

경로 파라미터

파라미터 데이터 타입 설명
task_id String 재스로틀(rethrottle)하려는 실행 중인 태스크의 고유 식별자예요.

쿼리 파라미터

파라미터 데이터 타입 설명
requests_per_second Float 태스크에 적용할 새 스로틀 값이에요. 스로틀을 비활성화하려면 -1을 사용해요. 선택 사항이에요.

예제 요청: 실행 중인 delete by query 태스크 재스로틀

POST /_delete_by_query/<YOUR_TASK_ID>/_rethrottle?requests_per_second=10

예제 요청: 실행 중인 reindex 태스크 재스로틀

POST /_reindex/<YOUR_TASK_ID>/_rethrottle?requests_per_second=20

예제 요청: 실행 중인 update by query 태스크 재스로틀

POST /_update_by_query/<YOUR_TASK_ID>/_rethrottle?requests_per_second=5

예제 응답

다음 응답은 활성 update_by_query 태스크에 대한 세부 정보를 제공해요:

{
  "nodes": {
    "bvv8SKpiRhOhF9_Bu8gZ7w": {
      "name": "opensearch-node1",
      "transport_address": "172.18.0.4:9300",
      "host": "172.18.0.4",
      "ip": "172.18.0.4:9300",
      "roles": [
        "cluster_manager",
        "data",
        "ingest",
        "remote_cluster_client"
      ],
      "attributes": {
        "shard_indexing_pressure_enabled": "true"
      },
      "tasks": {
        "bvv8SKpiRhOhF9_Bu8gZ7w:640": {
          "node": "bvv8SKpiRhOhF9_Bu8gZ7w",
          "id": 640,
          "type": "transport",
          "action": "indices:data/write/update/byquery",
          "status": {
            "total": 4785,
            "updated": 1000,
            "created": 0,
            "deleted": 0,
            "batches": 1,
            "version_conflicts": 0,
            "noops": 0,
            "retries": {
              "bulk": 0,
              "search": 0
            },
            "throttled_millis": 0,
            "requests_per_second": 50,
            "throttled_until_millis": 2146
          },
          "description": "update-by-query [test-rethrottle] updated with Script{type=inline, lang='painless', idOrCode='ctx._source.new_field = 'updated'', options={}, params={}}",
          "start_time_in_millis": 1751310547697,
          "running_time_in_nanos": 9567425129,
          "cancellable": true,
          "cancelled": false,
          "headers": {
            "X-Opaque-Id": "1b911516-44cd-4920-8c1e-79368ea7cdfd"
          },
          "resource_stats": {
            "average": {
              "cpu_time_in_nanos": 0,
              "memory_in_bytes": 0
            },
            "total": {
              "cpu_time_in_nanos": 0,
              "memory_in_bytes": 0
            },
            "min": {
              "cpu_time_in_nanos": 0,
              "memory_in_bytes": 0
            },
            "max": {
              "cpu_time_in_nanos": 0,
              "memory_in_bytes": 0
            },
            "thread_info": {
              "thread_executions": 0,
              "active_threads": 0
            }
          }
        }
      }
    }
  }
}

응답 본문 필드

응답은 재스로틀된 작업에 대한 태스크 및 노드 수준의 자세한 정보를 제공해요.

필드 데이터 타입 설명
nodes Object 각 노드의 태스크에 대한 세부 정보로 매핑되는 노드 ID 맵이에요.
nodes.<node_id>.name String 태스크가 실행 중인 노드의 이름이에요.
nodes.<node_id>.transport_address String 노드의 전송 주소예요.
nodes.<node_id>.host String 호스트 IP 주소예요.
nodes.<node_id>.ip String IP 주소와 포트예요.
nodes.<node_id>.roles Array 노드에 할당된 역할이에요.
nodes.<node_id>.attributes Object 노드 수준 속성이에요.
nodes.<node_id>.tasks Object 각 태스크에 대한 자세한 정보로 매핑되는 태스크 ID 맵이에요.
nodes.<node_id>.tasks.<task_id>.type String transport 같은 태스크 유형이에요.
nodes.<node_id>.tasks.<task_id>.action String 수행 중인 특정 작업(action)이에요(예: reindex ).
nodes.<node_id>.tasks.<task_id>.status Object 태스크의 현재 상태예요.
nodes.<node_id>.tasks.<task_id>.status.total Integer 처리할 총 문서 수예요.
nodes.<node_id>.tasks.<task_id>.status.created Integer 생성된 문서 수예요.
nodes.<node_id>.tasks.<task_id>.status.updated Integer 업데이트된 문서 수예요.
nodes.<node_id>.tasks.<task_id>.status.deleted Integer 삭제된 문서 수예요.
nodes.<node_id>.tasks.<task_id>.status.batches Integer 처리된 배치 수예요.
nodes.<node_id>.tasks.<task_id>.status.version_conflicts Integer 버전 충돌 수예요.
nodes.<node_id>.tasks.<task_id>.status.noops Integer 무작동(no-op) 업데이트 수예요.
nodes.<node_id>.tasks.<task_id>.status.retries Object 벌크 및 검색 작업의 재시도 통계예요.
nodes.<node_id>.tasks.<task_id>.status.requests_per_second Float 초당 요청 수로 나타낸 현재 스로틀 속도예요.
nodes.<node_id>.tasks.<task_id>.status.throttled_millis Integer 태스크가 스로틀된 시간(밀리초)이에요.
nodes.<node_id>.tasks.<task_id>.status.throttled_until_millis Integer 태스크가 스로틀 상태로 유지될 것으로 예상되는 시간(밀리초)이에요.
nodes.<node_id>.tasks.<task_id>.description String 태스크에 대한 사람이 읽을 수 있는 설명이에요.
nodes.<node_id>.tasks.<task_id>.start_time_in_millis Integer 에포크 밀리초로 나타낸 태스크 시작 시간이에요.
nodes.<node_id>.tasks.<task_id>.running_time_in_nanos Integer 나노초로 나타낸 태스크 실행 시간이에요.
nodes.<node_id>.tasks.<task_id>.cancellable Boolean 태스크를 취소할 수 있는지 여부예요.
nodes.<node_id>.tasks.<task_id>.cancelled Boolean 태스크가 취소되었는지 여부예요.
nodes.<node_id>.tasks.<task_id>.headers Object 태스크와 연결된 선택적 HTTP 헤더예요.
nodes.<node_id>.tasks.<task_id>.resource_stats Object 리소스 사용량에 대한 통계예요.

출처: 문서