NOTE: You are looking at documentation for an older release. For the latest information, see the current release documentation.
Update API
editUpdate API
editYou can either create an UpdateRequest
and send it to the client:
UpdateRequest updateRequest = new UpdateRequest(); updateRequest.index("index"); updateRequest.type("_doc"); updateRequest.id("1"); updateRequest.doc(jsonBuilder() .startObject() .field("gender", "male") .endObject()); client.update(updateRequest).get();
Or you can use prepareUpdate()
method:
client.prepareUpdate("ttl", "doc", "1") .setScript(new Script( "ctx._source.gender = \"male\"", ScriptService.ScriptType.INLINE, null, null)) .get(); client.prepareUpdate("ttl", "doc", "1") .setDoc(jsonBuilder() .startObject() .field("gender", "male") .endObject()) .get();
Your script. It could also be a locally stored script name.
In that case, you’ll need to use |
|
Document which will be merged to the existing one. |
Note that you can’t provide both script
and doc
.
Update by script
editThe update API allows to update a document based on a script provided:
UpdateRequest updateRequest = new UpdateRequest("ttl", "doc", "1") .script(new Script("ctx._source.gender = \"male\"")); client.update(updateRequest).get();
Update by merging documents
editThe update API also support passing a partial document, which will be merged into the existing document (simple recursive merge, inner merging of objects, replacing core "keys/values" and arrays). For example:
UpdateRequest updateRequest = new UpdateRequest("index", "type", "1") .doc(jsonBuilder() .startObject() .field("gender", "male") .endObject()); client.update(updateRequest).get();
Upsert
editThere is also support for upsert
. If the document does not exist, the content of the upsert
element will be used to index the fresh doc:
IndexRequest indexRequest = new IndexRequest("index", "type", "1") .source(jsonBuilder() .startObject() .field("name", "Joe Smith") .field("gender", "male") .endObject()); UpdateRequest updateRequest = new UpdateRequest("index", "type", "1") .doc(jsonBuilder() .startObject() .field("gender", "male") .endObject()) .upsert(indexRequest); client.update(updateRequest).get();
If the document index/_doc/1
already exists, we will have after this operation a document like:
If it does not exist, we will have a new document:
{ "name" : "Joe Smith", "gender": "male" }