更新的API编辑
你可以创建一个 UpdateRequest
并将其发送到客户端
UpdateRequest updateRequest = new UpdateRequest();
updateRequest.index("index");
updateRequest.type("type");
updateRequest.id("1");
updateRequest.doc(jsonBuilder()
.startObject()
.field("gender", "male")
.endObject());
client.update(updateRequest).get();
或者您也可以使用
prepareUpdate()
方法:
client.prepareUpdate("ttl", "doc", "1")
.setScript(new Script("ctx._source.gender = \"male\"" /*<1>*/ , ScriptService.ScriptType.INLINE, null, null))
.get();
client.prepareUpdate("ttl", "doc", "1")
.setDoc(jsonBuilder() /*<2>*/
.startObject()
.field("gender", "male")
.endObject())
.get();
注意,你不能提供 script
和 doc
.
更新的脚本编辑
更新一个文档的更新API允许基于提供的脚本:
UpdateRequest updateRequest = new UpdateRequest("ttl", "doc", "1")
.script(new Script("ctx._source.gender = \"male\""));
client.update(updateRequest).get();
更新通过合并文档编辑
更新的API还支持通过部分文档,将合并到现有的文档(内心简单的递归合并,合并的对象,更换核心“键/值”和数组)。例如:
UpdateRequest updateRequest = new UpdateRequest("index", "type", "1")
.doc(jsonBuilder()
.startObject()
.field("gender", "male")
.endObject());
client.update(updateRequest).get();
插入编辑
也有支持 upsert
。如果文件不存在,的内容 upsert
元素将用于索引新鲜的医生:
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); //<1><span style="font-family: Arial, Helvetica, sans-serif;"> </span>
client.update(updateRequest).get();
如果文档 index/type/1
已经存在,我们将这个操作后文档:
{
"name" : "Joe Dalton",
"gender": "male" //<1>
}
如果它不存在,我们将有一个新的文档:
{
"name" : "Joe Smith",
"gender": "male"
}