博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于 elasticsearch delete by query
阅读量:7099 次
发布时间:2019-06-28

本文共 1299 字,大约阅读时间需要 4 分钟。

hot3.png

elasticsearch delete by query  在 2.0 的时候已经被去除了,官网上说是因为delete by query  强制refresh可能导致在并行索引时发生OutOfMemoryError ,也可能导致主副本不一致,官网建议使用  查出ID,然后在根据ID批量删除。

根据官网建议写了一个delete by query 插件。

主要代码如下:

    

SearchResponse scrollResp = client.prepareSearch(index).setTypes(type)				.setScroll(new TimeValue(60000)).setSize(defaultBatchSize).setQuery(query)				.execute().actionGet();		long total = scrollResp.getHits().getTotalHits();				while (true) {			BulkRequestBuilder requestBuilder = client.prepareBulk().setRefresh(true);			for (SearchHit hit : scrollResp.getHits().getHits())				requestBuilder.add(new DeleteRequest(index, type, hit.getId()));			BulkResponse reponse = requestBuilder.execute().actionGet();			if (reponse.hasFailures()) {				for (BulkItemResponse item : reponse) {					if (item.isFailed()) {						LOGGER.warn(item.getFailureMessage());					}				}			}			            total = total - reponse.getItems().length;			LOGGER.info("has removed " + reponse.getItems().length + " rows, remain " + total + " rows ...");						scrollResp = client.prepareSearchScroll(scrollResp.getScrollId()).setScroll(new TimeValue(60000)).execute()					.actionGet();			if (scrollResp.getHits().getHits().length == 0)				break;		}

写了一个插件,插件地址:,

目前这个插件是针对es 2.4.1版本的。其他版本可以修改一下即可。

转载于:https://my.oschina.net/u/2380882/blog/807264

你可能感兴趣的文章
Java实现多线程下载
查看>>
GPUImage
查看>>
标准函数头部注释
查看>>
743. Network Delay Time
查看>>
Python瓦匠 —— 小项目(找出文本中所的电话号码和邮件地址)
查看>>
阅读《一》
查看>>
uiscreen,uiwindow,uiview, - 转www.tekuba.net/program/270/
查看>>
A + B 问题
查看>>
How .Net-work drew sceptics(Translation)
查看>>
Map.Entry说明
查看>>
给自己一个交代--项目经理的总结
查看>>
排序算法 2 qsort 库函数,泛型函数
查看>>
acm 1170
查看>>
emmet教程
查看>>
20189317 《网络攻防技术》 第五周作业
查看>>
【HDOJ】1197 Specialized Four-Digit Numbers
查看>>
【HDOJ】前三百留念
查看>>
【HDOJ】2451 Simple Addition Expression
查看>>
the art of seo(chapter eight)
查看>>
接口、继承和泛型方法的使用
查看>>