zoukankan      html  css  js  c++  java
  • es之java删除文档操作

    删除文档操作

    @Test
    public void deleteDocument(){
        DeleteResponse response = client.prepareDelete("twitter4", "tweet", "1").get();
        // 索引名称
        String _index = response.getIndex();
        // 类型
        String _type = response.getType();
        // 文档ID
        String _id = response.getId();
        // 版本
        long _version = response.getVersion();
        // 返回的操作状态
        RestStatus status = response.status();
        System.out.println("索引名称:"+_index+" "+"类型 :" +  _type + " 文档ID:"+_id+" 版本 :"+_version+" 返回的操作状态:"+status);
    }

    2:通过查询的方式删除

    往往生产的需求是能够类似mysql一样,通过查询出符合条件的数据进行删除:

    比如mysql:

    DELETE FROM Employees WHERE ps_code= 
    (SELECT ps_code 不存在 FROM Employees WHERE ps_code NOT IN `icq_user_info``persons`
    (SELECT ps_code FROM Persons));

    那么es也是支持这种操作的:DeleteByQueryAction允许检索一个索引,把匹配出来的字段删除

    @Test
    public void queryDeleteDocument(){
        BulkByScrollResponse response =
                DeleteByQueryAction.INSTANCE.newRequestBuilder(client)
                        .filter(QueryBuilders.matchQuery("user", "tom"))//key -- value
                        .source("twitter4")//索引名称
                        .get();
    
        long deleted = response.getDeleted();
        System.out.println("总共删除时间:"+deleted);
    }

    3: 优化-通过查询进行删除

    上面的查询删除,在实际的生产中会占用大量的时间,所以为了不阻塞其他的操作,应该把上面的操作变成异步执行方式

    /**
     * 优化--异步的方式执行
     * */
    @Test
    public void tuningqueryDeleteDocument(){
        DeleteByQueryAction.INSTANCE.newRequestBuilder(client)
                .filter(QueryBuilders.matchQuery("user", "kimchy"))
                .source("twitter4")
                .execute(new ActionListener<BulkByScrollResponse>() {
                    public void onResponse(BulkByScrollResponse response) {
                        long deleted = response.getDeleted();
                        System.out.println("总共删除时间:"+deleted);//因为是异步执行,所以不会打印
                    }
                    public void onFailure(Exception e) {
                        System.out.println("程序运行出错");
                    }
    
                });
    
    }
  • 相关阅读:
    使用Maven快速创建一个SpringMVC工程步骤
    签到
    yaml简介
    APP定位元素之UiSelector
    js中var、let、const区别
    用Jquery去写树结构
    正则相关的知识分享
    python常见问题
    Vue.js 的一些小技巧
    关于jsp删除成功,添加成功等之后 页面自动跳转的js写法
  • 原文地址:https://www.cnblogs.com/niutao/p/10909247.html
Copyright © 2011-2022 走看看