Elasticsearch的Java客户端--文档操作--更新文档

官方文档:

步骤

public static void main(String[] args) throws IOException {
    
    
        // 1.创建客户端
        RestClientBuilder clientBuilder = RestClient.builder(new HttpHost("127.0.0.1", 9200, "http"));
        RestHighLevelClient client = new RestHighLevelClient(clientBuilder);

        // 2.创建请求,指定文档的索引名称和id
        UpdateRequest request = new UpdateRequest("posts", "1");

        // 3.要更新的文档
        String jsonString = "{" +
                "\"updated\":\"2017-01-01\"," +
                "\"reason\":\"daily update\"" +
                "}";
        // 文档也可以以Map对象的形式提交,具体请参考 API
        request.doc(jsonString, XContentType.JSON);

        // 4.执行请求,返回响应
        UpdateResponse response = client.update(request, RequestOptions.DEFAULT);

        String id = response.getId();
        String index = response.getIndex();
        GetResult getResult = response.getGetResult();
        boolean exists = getResult.isExists();//文档是否存在

        // 5.关闭客户端
        client.close();
    }

上面更新文档的方式被称为提供部分文档的更新,ES客户端还支持一种脚本方式的更新

脚本方式

public static void main(String[] args) throws IOException {
    
    
        // 1.创建客户端
        RestClientBuilder clientBuilder = RestClient.builder(new HttpHost("127.0.0.1", 9200, "http"));
        RestHighLevelClient client = new RestHighLevelClient(clientBuilder);

        // 2.创建请求,指定文档的索引名称和id
        UpdateRequest request = new UpdateRequest("posts", "1");

        // 3.要更新的文档
        // 脚本执行时的参数
        HashMap<String, Object> parameters = new HashMap<>();
        parameters.put("count", 4);
        // 创建脚本
        Script inline = new Script(ScriptType.INLINE, "painless",
                "ctx._source.field += params.count", parameters);
        request.script(inline);

        // 4.执行请求,返回响应
        UpdateResponse response = client.update(request, RequestOptions.DEFAULT);

        String id = response.getId();
        String index = response.getIndex();
        GetResult getResult = response.getGetResult();
        boolean exists = getResult.isExists();//文档是否存在

        // 5.关闭客户端
        client.close();
    }

猜你喜欢

转载自blog.csdn.net/imonkeyi/article/details/120570547