Update by query context
edit
IMPORTANT: This documentation is no longer updated. Refer to Elastic's version policy and the latest documentation.
Update by query context
editUse 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.
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['_source'](Map) -
Contains extracted JSON in a
MapandListstructure for the fields existing in a stored document.
Side Effects
-
ctx['op'] -
Use the default of
indexto update a document. Set tononeto specify no operation ordeleteto delete the current document from the index. -
ctx['_source'] -
Modify the values in the
Map/Liststructure 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 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
}
}
}