Update context

edit

Use a Painless script in an update operation to add, modify, or delete fields within a single document.

Variables

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['_now'] (long, read-only)
The current timestamp in milliseconds.
ctx['_source'] (Map)
Contains extracted JSON in a Map and List structure for the fields existing in a stored document.

Side Effects

ctx['op']
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.
ctx['_source']
Modify the values in the Map/List structure to add, modify, or delete the fields of a document.

Return

void
No expected return value.

API

The standard Painless API is available.

Example

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

The following query updates a document to be sold, and sets the cost to the actual price paid after discounts:

POST /seats/_update/3
{
  "script": {
    "source": "ctx._source.sold = true; ctx._source.cost = params.sold_cost",
    "lang": "painless",
    "params": {
      "sold_cost": 26
    }
  }
}