zoukankan      html  css  js  c++  java
  • elasticsearch 中文API 更新(五)

    更新API

    你能够创建一个UpdateRequest,然后将其发送给client。

    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方法

    1 client.prepareUpdate("ttl", "doc", "1")
    2        .setScript("ctx._source.gender = "male""  , ScriptService.ScriptType.INLINE)
    3        .get();
    
    5 client.prepareUpdate("ttl", "doc", "1")
    6        .setDoc(jsonBuilder()
    7            .startObject()
    8                .field("gender", "male")
    9            .endObject())
    10        .get();
    

    1-3行用脚本来更新索引,5-10行用doc来更新索引。

    当然,java API也支持使用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);
    client.update(updateRequest).get();
    

    如果文档index/type/1已经存在,那么在更新操作完成之后,文档为:

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

    否则,文档为:

    {
        "name" : "Joe Smith",
        "gender": "male"
    }
  • 相关阅读:
    Linux内核的总结认识
    服务器的基本问题避免
    Linux中多线程信号的处理
    gdb调试
    TCP数据包的封包和拆包
    网络TCp数据的传输设计(黏包处理)
    InputArray和OutputArray
    UTF8转unicode说明
    C++使用标准库的栈和队列
    resize函数有五种插值算法
  • 原文地址:https://www.cnblogs.com/bmaker/p/5472433.html
Copyright © 2011-2022 走看看