Elasticsearch java API (9)更新的API

更新的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();

你的脚本。它也可以是一个本地存储脚本名称。在这种情况下,您将需要使用ScriptService.ScriptType.FILE

文档将被合并到现有的一个。

注意,你不能提供 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();

如果文件不存在, indexRequest将被添加

如果文档 index/type/1已经存在,我们将这个操作后文档:

{
    "name"  : "Joe Dalton",
    "gender": "male"     //<1>   
}

添加这个字段的更新请求

如果它不存在,我们将有一个新的文档:

{
    "name" : "Joe Smith",
    "gender": "male"
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值