
The update API allows to update(also allows to delete, or ignore the operation). a document based on a script provided.
- The operation gets the document from the index, runs the script (with optional script language and parameters), and index back the result.
- The _source field needs to be enabled for this feature to work.
For example, let’s index a simple doc:
curl -X PUT "localhost:9200/test/_doc/1" -H 'Content-Type: application/json' -d'
{
"counter" : 1,
"tags" : ["red"]
}
'
Now, we can execute a script that would increment the counter:
curl -X POST "localhost:9200/test/_doc/1/_update" -H 'Content-Type: application/json' -d'
{
"script" : {
"source": "ctx._source.counter += params.count",
"lang": "painless",
"params" : {
"count" : 4
}
}
}
'
We can add a tag to the list of tags (note, if the tag exists, it will still add it, since its a list):
curl -X POST "localhost:9200/test/_doc/1/_update" -H 'Content-Type: application/json' -d'
{
"script" : {
"source": "ctx._source.tags.add(params.tag)",
"lang": "painless",
"params" : {
"tag" : "blue"
}
}
}
'
ng>We can also add a new field to the document:
curl -X POST "localhost:9200/test/_doc/1/_update" -H 'Content-Type: application/json' -d'
{
"script" : "ctx._source.new_field = \u0027value_of_new_field\u0027"
}
'
We can also add a new field to the document:
curl -X POST "localhost:9200/test/_doc/1/_update" -H 'Content-Type: application/json' -d'
{
"script" : "ctx._source.new_field = \u0027value_of_new_field\u0027"
}
'
Or remove a field from the document:
curl -X POST "localhost:9200/test/_doc/1/_update" -H 'Content-Type: application/json' -d'
{
"script" : "ctx._source.remove(\u0027new_field\u0027)"
}
'
Reference
https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update.html
ctx is a special variable that allows you to access the source of the object that you want to update. The ctx._source is a writable version of the source.
NOTE: You can modify this document in the script and the modified source will be persisted as the new version of the document.
I’m Rajesh Kumar, a DevOps, SRE, DevSecOps, Cloud, and Platform Engineering expert passionate about sharing practical knowledge, real-world experiences, and industry best practices. I have worked at Cotocus and regularly write about technology, travel, investing, health, product reviews, and digital marketing through my various platforms.
I publish technical articles at DevOps School, travel stories at Holiday Landmark, stock market insights at Stocks Mantra, health and fitness guidance at My Medic Plus, product reviews at TrueReviewNow, and SEO and digital marketing strategies at Wizbrand.
Find Trusted Cardiac Hospitals
Compare heart hospitals by city and services — all in one place.
Explore Hospitals