之前在 2.X版本里 这个Delete By Query功能被去掉了 因为官方认为会引发一些错误 如需使用 需要自己安装插件。

bin/plugin install delete-by-query

需要使用时

DELETE /索引名/需要清空的type/_query
{
"query": {
"match_all": {}
}
}

那么在5.x版本中 这个api又被官方重新加回自带功能。新特性里是这么说的。

Delete-by-query 和 Update-by-query 重新回到 core ,以前是插件,现在可以直接使用了,
也是构建在 Reindex 机制之上。
(es1.x版本是直接支持,在es2.x中提取为插件,5.x继续回归直接支持)

我查看了官方手册后发现使用也不一样了 见下图

官方地址:https://www.elastic.co/guide/en/elasticsearch/reference/5.2/docs-delete-by-query.html

即替换以前的 _query 为_delete_by_query 便可达到目的。

通过header插件删除

使用head插件删除指定数据

http://serverhost:9200/index/type/_delete_by_query   post

{
"query": {
"match": {
属性字段: 要删除的属性值
}
}
}

Java代码实现:

String index = "wareic";

BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
queryBuilder.must(QueryBuilders.termQuery("groupID", "42023")); BulkIndexByScrollResponse response =
DeleteByQueryAction.INSTANCE.newRequestBuilder(client)
.filter(queryBuilder)
.source(index)
.get(); long deleted = response.getDeleted();
System.out.println(deleted);

另一种实现方式:

String index = "wareic";
String type = "product";
BulkRequestBuilder bulkRequest = client.prepareBulk();
SearchRequestBuilder searchRequestBuilder = client.prepareSearch(index).setTypes(type);
//分页
searchRequestBuilder.setFrom(0).setSize(1000); BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
queryBuilder.must(QueryBuilders.termQuery("groupID", "3445")); searchRequestBuilder.setQuery(queryBuilder);
SearchResponse response = searchRequestBuilder.execute().get();
for(SearchHit hit : response.getHits()){
String id = hit.getId();
bulkRequest.add(client.prepareDelete(index, type, id).request());
}
BulkResponse bulkResponse = bulkRequest.get();
if (bulkResponse.hasFailures()) {
for(BulkItemResponse item : bulkResponse.getItems()){
System.out.println(item.getFailureMessage());
}
} else {
System.out.println("delete ok");
}

文章参考地址:https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.2/java-docs-delete-by-query.html

elasticsearch Delete (根据条件删除)的更多相关文章

  1. 在SQLSERVER中快速有条件删除海量数据技巧推荐

    解释: 如果你的硬盘空间小,并且不想设置数据库的日志为最小(因为希望其他正常的日志希望仍然记录),而且对速度要求比较高,并清除所有的数据建议你用turncate table1,因为truncate 是 ...

  2. oracle 快速删除大批量数据方法(全部删除,条件删除,删除大量重复记录)

    oracle 快速删除大批量数据方法(全部删除,条件删除,删除大量重复记录) 分类: ORACLE 数据库 2011-05-24 16:39 8427人阅读 评论(2) 收藏 举报 oracledel ...

  3. std::set 中内部元素有序条件删除的理解

    std::set 中内部元素有序条件删除的理解 1. std::set中的元素是有序排列的 注意:Set集合中的元素通过iterator的引用,但是不能修改. 元素排序: (1)元素中实现比较oper ...

  4. Java根据条件删除Map中元素

    今天在写程序过程中,需要根据判断条件删除一个Map中的相应数据,我自然而然想到可以通过调用Map中的remove(Object key)函数进行删除:代码如下: public Map<Doubl ...

  5. delete 多表删除的使用(连表删除)

    delete 多表删除的使用     1.从数据表t1中把那些id值在数据表t2里有匹配的记录全删除掉 DELETE t1 FROM t1,t2 WHERE t1.id=t2.id 或 DELETE  ...

  6. JAVA insert() 插入字符串 reverse() 颠倒 delete()和deleteCharAt() 删除字符 replace() 替换 substring() 截取子串

    insert() 插入字符串 StringBuffer insert(int index,String str) StringBuffer insert(int index,char ch) Stri ...

  7. 用delete和trancate删除表记录的区别

    首先说相同点,就是他们都能删除表中的数据,区别有两点: 第一点: delete语句在删除记录的时候可以有选择的删除某些数据(使用where子句),当然,如果不添加where子句,就是删除所有记录 而t ...

  8. Map中根据条件删除元素

    今天在写程序过程中,需要根据判断条件删除一个Map中的相应数据,我自然而然想到可以通过调用Map中的remove(Object key)函数进行删除:代码如下: public Map<Doubl ...

  9. dtgrid 手动条件删除表格中的某一行

    dtgrid 手动条件删除表格中的某一行 var grid = $.fn.DtGrid.init(dtGridOption); $(function () { grid.load(); }); fun ...

  10. elasticsearch组合多条件查询实现restful api以及java代码实现

    原文:http://blog.java1234.com/blog/articles/372.html elasticsearch组合多条件查询实现restful api以及java代码实现 实际开发中 ...

随机推荐

  1. LinqToSQL4

    Join和GroupJoin的区别 List<Atable> ainfo = new List<Atable> { new Atable{ AId=1, AName=" ...

  2. DotNet跨平台 - .net core项目部署到centos7

    环境说明 系统:CentOS Linux release 7.2.1511 (Core) 相关工具:VS2017  xftp 服务器软件:.net core2.0,nginx 准备.net core应 ...

  3. 公共的强制保留两位小数的js方法

    强制保留两位小数的js方法 //写一个公共的强制保留两位小数的js方法 function toDecimal2 (x) { var f = parseFloat(x) if (isNaN(f)) { ...

  4. php 测试php连接redis集群的案例

    <?php$redis_list = ['12.24.18.2:6379'];$client = new RedisCluster(NUll,$redis_list);echo $client- ...

  5. sqlserver错误状态码解释

    Code Error Message 0 操作成功完成. 1 功能错误. 2 系统找不到指定的文件. 3 系统找不到指定的路径. 4 系统无法打开文件. 5 拒绝访问. 6 句柄无效. 7 存储控制块 ...

  6. [转载]Pytorch详解NLLLoss和CrossEntropyLoss

    [转载]Pytorch详解NLLLoss和CrossEntropyLoss 来源:https://blog.csdn.net/qq_22210253/article/details/85229988 ...

  7. vue中的绑定class和微信小程序中的绑定class的区别

    微信小程序 小程序里面的class与style绑定,遵循HTML特性绑定,有关于HTML绑定.在进行class与style绑定时,可以直接绑定,也可以带上逻辑与,或者三元运算进行条件控制 JS dat ...

  8. 这段时间大量网站被k的原因分析

    百度这次更新的K站幅度比较大,通过对被k网站的分析,没有发现文章类型网站有降权现象,主要集中在企业网站上.分析大约30发个网站发现共同明显的特征就是这样的网站有大量的页面只有一张或者两张图片,而这些网 ...

  9. What is libacl.so.1 ?

    Google says, "This package contains the libacl.so dynamic library which contains the POSIX 1003 ...

  10. 七:mvc使用CodeFirst(代码优先)创建数据库

    1. 理解EF CodeFirst模式特点 2. 使用CodeFirst模式生成数据库 1. CodeFirst模式(代码优先) Code First是Entity Framework提供的一种新的编 ...