{
  "update_by_query": {
    "documentation": {
      "url": "https://www.elastic.co/docs/api/doc/elasticsearch/operation/operation-update-by-query",
      "description": "Update documents"
    },
    "stability": "stable",
    "visibility": "public",
    "headers": {
      "accept": [
        "application/json"
      ],
      "content_type": [
        "application/json"
      ]
    },
    "url": {
      "paths": [
        {
          "path": "/{index}/_update_by_query",
          "methods": [
            "POST"
          ],
          "parts": {
            "index": {
              "type": "list",
              "description": "A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices"
            }
          }
        }
      ]
    },
    "params": {
      "analyzer": {
        "type": "string",
        "description": "The analyzer to use for the query string"
      },
      "analyze_wildcard": {
        "type": "boolean",
        "default": false,
        "description": "Specify whether wildcard and prefix queries should be analyzed (default: false)"
      },
      "default_operator": {
        "type": "enum",
        "options": [
          "and",
          "or"
        ],
        "default": "or",
        "description": "The default operator for query string query (AND or OR)"
      },
      "df": {
        "type": "string",
        "description": "The field to use as default where no field prefix is given in the query string"
      },
      "from": {
        "type": "long",
        "default": 0,
        "description": "Starting offset (default: 0)"
      },
      "ignore_unavailable": {
        "type": "boolean",
        "default": false,
        "description": "Whether specified concrete indices should be ignored when unavailable (missing or closed)"
      },
      "allow_no_indices": {
        "type": "boolean",
        "default": true,
        "description": "Whether to allow (1) wildcard index expressions that match no indices and (2) requests where the final resolved set is empty."
      },
      "conflicts": {
        "type": "enum",
        "options": [
          "abort",
          "proceed"
        ],
        "default": "abort",
        "description": "What to do when the update by query hits version conflicts?"
      },
      "expand_wildcards": {
        "type": "list",
        "options": [
          "open",
          "closed",
          "hidden",
          "none",
          "all"
        ],
        "default": "open",
        "description": "Whether to expand wildcard expression to concrete indices that are open, closed or both."
      },
      "lenient": {
        "type": "boolean",
        "default": false,
        "description": "Specify whether format-based query failures (such as providing text to a numeric field) should be ignored"
      },
      "pipeline": {
        "type": "string",
        "description": "Ingest pipeline to set on index requests made by this action. (default: none)"
      },
      "preference": {
        "type": "string",
        "description": "Specify the node or shard the operation should be performed on (default: random)"
      },
      "q": {
        "type": "string",
        "description": "Query in the Lucene query string syntax"
      },
      "routing": {
        "type": "list",
        "description": "A comma-separated list of specific routing values"
      },
      "scroll": {
        "type": "time",
        "default": "5m",
        "description": "Specify how long a consistent view of the index should be maintained for scrolled search"
      },
      "search_type": {
        "type": "enum",
        "options": [
          "query_then_fetch",
          "dfs_query_then_fetch"
        ],
        "description": "Search operation type"
      },
      "search_timeout": {
        "type": "time",
        "description": "Explicit timeout for each search request. Defaults to no timeout."
      },
      "max_docs": {
        "type": "long",
        "description": "Maximum number of documents to process (default: all documents)"
      },
      "sort": {
        "type": "list",
        "description": "A comma-separated list of <field>:<direction> pairs"
      },
      "terminate_after": {
        "type": "long",
        "description": "The maximum number of documents to collect for each shard, upon reaching which the query execution will terminate early."
      },
      "stats": {
        "type": "list",
        "description": "Specific 'tag' of the request for logging and statistical purposes"
      },
      "version": {
        "type": "boolean",
        "description": "Specify whether to return document version as part of a hit"
      },
      "version_type": {
        "type": "boolean",
        "description": "Should the document increment the version number (internal) on hit or not (reindex)"
      },
      "request_cache": {
        "type": "boolean",
        "description": "Specify if request cache should be used for this request or not, defaults to index level setting"
      },
      "refresh": {
        "type": "boolean",
        "default": false,
        "description": "Should the affected indexes be refreshed?"
      },
      "timeout": {
        "type": "time",
        "default": "1m",
        "description": "Time each individual bulk request should wait for shards that are unavailable."
      },
      "wait_for_active_shards": {
        "type": "string",
        "default": "1",
        "description": "Sets the number of shard copies that must be active before proceeding with the update by query operation. Defaults to 1, meaning the primary shard only. Set to `all` for all shard copies, otherwise set to any non-negative value less than or equal to the total number of copies for the shard (number of replicas + 1)"
      },
      "scroll_size": {
        "type": "long",
        "default": 1000,
        "description": "Size on the scroll request powering the update by query"
      },
      "wait_for_completion": {
        "type": "boolean",
        "default": true,
        "description": "Should the request should block until the update by query operation is complete."
      },
      "requests_per_second": {
        "type": "number",
        "default": -1,
        "description": "The throttle to set on this request in sub-requests per second. -1 means no throttle."
      },
      "slices": {
        "type": "number|string",
        "default": 1,
        "description": "The number of slices this task should be divided into. Defaults to 1, meaning the task isn't sliced into subtasks. Can be set to `auto`."
      }
    },
    "body": {
      "description": "The search definition using the Query DSL",
      "required": false
    }
  }
}
