Throttle a reindex operation
- POST /_reindex/{task_id}/_rethrottle
Change the maximum number of documents to index per second for a particular reindex operation. For example, to unthrottle to unlimited documents per second:
POST _reindex/r1A2WoRbTwKZ516z6NEs5A:36619/_rethrottle?requests_per_second=-1
Rethrottling that speeds up the query takes effect immediately. Rethrottling that slows down the query will take effect after completing the current batch of documents. This behavior prevents scroll timeouts.
This API follows reindex tasks across node-shutdown relocations, so callers can keep using the original task ID throughout the lifetime of the operation. The relocated task ID is also accepted and is followed transparently. In either case, returned task IDs and timings reflect the original task, not its relocated successor.
The rethrottle may not have been applied to any tasks if either node_failures or task_failures are non-empty, or if the response contains
no successfully rethrottled tasks — that is, no entries under nodes (returned with the default
group_by=nodes in stack) or under tasks (returned in serverless, or in stack with
group_by=none or group_by=parents).
Response
-
node_failuresobject -
Node-level failures encountered while applying the rethrottle request. Will return a
failed_node_exceptionwrapping ano_such_node_exception, if a node handling the task either never existed, or has left the cluster, and one of the following is true:- The task has completed.
- The task cannot be found.
NoteRethrottle handles relocations, so it should succeed if the task can be found and has not completed.
-
task_failuresobject -
Per-task failures encountered while applying the rethrottle. If a rethrottle is attempted during a relocation handoff, the failure object reports
status: SERVICE_UNAVAILABLE(the HTTP response itself is still200 OK). In this case, the request can be retried until success. -
nodesmap string to object -
Tasks grouped by node, returned only when
group_by=nodes(the default). -
<string>object -
rolesenum -
Values:
masterdatadata_colddata_contentdata_frozendata_hotdata_warmclientingestmlvoting_onlytransformremote_cluster_clientcoordinating_only -
tasksmap string to objectrequired -
<string>object -
statusobjectrequired -
slicesobject -
noopsnumberrequired -
The number of documents that were ignored because the script used for the reindex returned a
noopvalue forctx.op. -
requests_per_secondnumberrequired -
The number of requests per second effectively executed during the reindex.
-
retriesobjectrequired -
The number of retries attempted by reindex.
bulkis the number of bulk actions retried andsearchis the number of search actions retried. -
throttled_millisnumberrequired -
Number of milliseconds the request slept to conform to
requests_per_second. -
throttled_until_millisnumberrequired -
This field should always be equal to zero in a
_reindexresponse. It only has meaning when using the Task API, where it indicates the next time (in milliseconds since epoch) a throttled request will be executed again in order to conform torequests_per_second. -
noopsnumberrequired -
The number of documents that were ignored because the script used for the reindex returned a
noopvalue forctx.op. -
requests_per_secondnumberrequired -
The number of requests per second effectively executed during the reindex.
-
retriesobjectrequired -
The number of retries attempted by reindex.
bulkis the number of bulk actions retried andsearchis the number of search actions retried. -
throttled_millisnumberrequired -
Number of milliseconds the request slept to conform to
requests_per_second. -
throttled_until_millisnumberrequired -
This field should always be equal to zero in a
_reindexresponse. It only has meaning when using the Task API, where it indicates the next time (in milliseconds since epoch) a throttled request will be executed again in order to conform torequests_per_second.