Updating Elasticsearch field value with a Query
This tutorial shows you how to update an Elasticsearch field value based on a Query. Let say following is your document in Elasticsearch
{
"id" : 123,
"name" : "foo",
"age" : 45
}
and you want to set the use age to 50 where name is foo i.e the following sql query
update user set age = 50 where name = 'foo'
Following is the CURL you need to run to do the same in Elasticsearch
curl -XPOST "http://localhost:9200/your_index_name/_update_by_query" -H 'Content-Type: application/json' -d'
{
"script" : {
"source": "ctx._source.age=50;",
"lang": "painless"
},
"query": {
"term" : {
"name.keyword": "foo"
}
}
}'
If you are using the Kibana's DevTools then you can run the following statement
POST your_index_name/_update_by_query
{
"script" : {
"source": "ctx._source.age=50;",
"lang": "painless"
},
"query": {
"term" : {
"name.keyword": "foo"
}
}
}
On successful run you will get a response like following
{
"took": 4,
"timed_out": false,
"total": 1,
"updated": 1,
"deleted": 0,
"batches": 1,
"version_conflicts": 0,
"noops": 0,
"retries": {
"bulk": 0,
"search": 0
},
"throttled_millis": 0,
"requests_per_second": -1,
"throttled_until_millis": 0,
"failures": []
}