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.
- Implementing Managed IT Services: A Step-by-Step Guide - August 30, 2024
- DevOps Foundation Certification - August 29, 2024
- SRE Foundation Certification - August 29, 2024