This documentation contains work-in-progress information for future Elastic Stack and Cloud releases. Use the version selector to view supported release docs. It also contains some Elastic Cloud serverless information. Check out our serverless docs for more details.
Update context
editUpdate context
editUse 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
andList
structure for the fields existing in a stored document.
Side Effects
-
ctx['op']
-
Use the default of
index
to update a document. Set tonone
to specify no operation ordelete
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 } } }