Rethrottle
You can use the following APIs to dynamically change the requests_per_second
for _reindex
, _update_by_query
, or _delete_by_query
operations that are already running.
Endpoints
POST /_delete_by_query/{task_id}/_rethrottle
POST /_reindex/{task_id}/_rethrottle
POST /_update_by_query/{task_id}/_rethrottle
Path parameters
Parameter | Data type | Description |
---|---|---|
task_id | String | The unique identifier for the running task that you want to rethrottle. |
Query parameters
Parameter | Data type | Description |
---|---|---|
requests_per_second | Float | The new throttle value to apply to the task. Use -1 to disable throttling. Optional. |
Example request: Rethrottle a running delete by query task
POST /_delete_by_query/<YOUR_TASK_ID>/_rethrottle?requests_per_second=10
Example request: Rethrottle a running reindex task
POST /_reindex/<YOUR_TASK_ID>/_rethrottle?requests_per_second=20
Example request: Rethrottle a running update by query task
POST /_update_by_query/<YOUR_TASK_ID>/_rethrottle?requests_per_second=5
Example response
The following response provides details regarding the active update_by_query
task:
{
"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
}
}
}
}
}
}
}
Response body fields
The response provides detailed task- and node-level information about the rethrottled operation.
Field | Data type | Description |
---|---|---|
nodes | Object | A map of node IDs to details about the task on each node. |
nodes.<node_id>.name | String | The name of the node on which the task is running. |
nodes.<node_id>.transport_address | String | The transport address of the node. |
nodes.<node_id>.host | String | The host IP address. |
nodes.<node_id>.ip | String | The IP address and port. |
nodes.<node_id>.roles | Array | The roles assigned to the node. |
nodes.<node_id>.attributes | Object | Node-level attributes. |
nodes.<node_id>.tasks | Object | A map of task IDs to detailed information about each task. |
nodes.<node_id>.tasks.<task_id>.type | String | The task type, such as transport . |
nodes.<node_id>.tasks.<task_id>.action | String | The specific action being performed (for example, reindex ). |
nodes.<node_id>.tasks.<task_id>.status | Object | The current status of the task. |
nodes.<node_id>.tasks.<task_id>.status.total | Integer | The total number of documents to process. |
nodes.<node_id>.tasks.<task_id>.status.created | Integer | The number of documents created. |
nodes.<node_id>.tasks.<task_id>.status.updated | Integer | The number of documents updated. |
nodes.<node_id>.tasks.<task_id>.status.deleted | Integer | The number of documents deleted. |
nodes.<node_id>.tasks.<task_id>.status.batches | Integer | The number of batches processed. |
nodes.<node_id>.tasks.<task_id>.status.version_conflicts | Integer | The number of version conflicts. |
nodes.<node_id>.tasks.<task_id>.status.noops | Integer | The number of no-op updates. |
nodes.<node_id>.tasks.<task_id>.status.retries | Object | Retry stats for bulk and search operations. |
nodes.<node_id>.tasks.<task_id>.status.requests_per_second | Float | Current throttle rate in requests per second. |
nodes.<node_id>.tasks.<task_id>.status.throttled_millis | Integer | The time, in milliseconds, that the task was throttled. |
nodes.<node_id>.tasks.<task_id>.status.throttled_until_millis | Integer | The time, in milliseconds, that the task is expected to remain throttled. |
nodes.<node_id>.tasks.<task_id>.description | String | A human-readable description of the task. |
nodes.<node_id>.tasks.<task_id>.start_time_in_millis | Integer | The task start time in epoch milliseconds. |
nodes.<node_id>.tasks.<task_id>.running_time_in_nanos | Integer | The task runtime in nanoseconds. |
nodes.<node_id>.tasks.<task_id>.cancellable | Boolean | Whether the task can be canceled. |
nodes.<node_id>.tasks.<task_id>.cancelled | Boolean | Whether the task has been canceled. |
nodes.<node_id>.tasks.<task_id>.headers | Object | Optional HTTP headers associated with the task. |
nodes.<node_id>.tasks.<task_id>.resource_stats | Object | Statistics about resource usage. |