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("程序运行出错");
                    }
    
                });
    
    }
  • 相关阅读:
    需求分析之“客户隐形需求”
    JAVA版的SqlHelper【自学jdbc3个晚上的总结】
    NHibernate封装代码
    一步步认识NHibernate的延迟加载
    设置RichTextbox行间距
    .NET不可不读的书籍
    程序员的纠结
    CSS图片下载器
    从此告别CSDN
    C语言I博客作业02
  • 原文地址:https://www.cnblogs.com/niutao/p/10909247.html
Copyright © 2011-2022 走看看