基本操作
你可以创建一个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\"" , ScriptService.ScriptType.INLINE, null, null))
.get();
client.prepareUpdate("ttl", "doc", "1")
.setDoc(jsonBuilder()
.startObject()
.field("gender", "male")
.endObject())
.get();
请注意,您不能同时提供脚本和doc。
Update By Script
更新API允许根据提供的脚本更新文档:
UpdateRequest updateRequest = new UpdateRequest("ttl", "doc", "1")
.script(new Script("ctx._source.gender = \"male\""));
client.update(updateRequest).get();
Update by merging documentsedit
更新API还支持传递一个部分文档,它将被合并到现有的文档中(简单的递归合并,对象的内部合并,替换核心的“键/值”和数组)。例如:
UpdateRequest updateRequest = new UpdateRequest("index", "type", "1")
.doc(jsonBuilder()
.startObject()
.field("gender", "male")
.endObject());
client.update(updateRequest).get();
Upsert
也有对upsert的支持。如果文档不存在,upsert元素的内容将被用来索引新的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();
如果文件index/type/1已经存在,我们将在这个操作之后有一个文档,如:
{
"name" : "Joe Dalton",
"gender": "male"
}
如果它不存在,我们将会有一个新的文档:
{
"name" : "Joe Smith",
"gender": "male"
}
» 订阅本站:https://www.kgraph.cn