Update by query contextedit

Use a Painless script in an update by query operation to add, modify, or delete fields within each of a set of documents collected as the result of query.


params (Map, read-only)
User-defined parameters passed in as part of the query.
ctx['op'] (String)
The name of the operation.
ctx['_routing'] (String, read-only)
The value used to select a shard for document storage.
ctx['_index'] (String, read-only)
The name of the index.
ctx['_id'] (String, read-only)
The unique document id.
ctx['_version'] (int, read-only)
The current version of the document.
ctx['_source'] (Map)
Contains extracted JSON in a Map and List structure for the fields existing in a stored document.

Side Effects

Use the default of index to update a document. Set to none to specify no operation or delete to delete the current document from the index.
Modify the values in the Map/List structure to add, modify, or delete the fields of a document.


No expected return value.


The standard Painless API is available.


To run this example, first follow the steps in context examples.

The following query finds all seats in a specific section that have not been sold and lowers the price by 2:

POST /seats/_update_by_query
  "query": {
    "bool": {
      "filter": [
          "range": {
            "row": {
              "lte": 3
          "match": {
            "sold": false
  "script": {
    "source": "ctx._source.cost -= params.discount",
    "lang": "painless",
    "params": {
      "discount": 2