您的位置:首页 > 产品设计 > UI/UE

Elasticsearch Java Api(六)--DeleteByQuery

2017-02-13 11:37 483 查看
参考stackoverflow上的帖子,总结DeleteByQuery的Java api


一、安装插件

要删除某个索引的一个type下的所有文档,相当于关系型数据库中的清空表操作。查阅了一些资料可以通过Delete-by-Query插件删除,首先使用插件管理器安装Delete-by-Query插件:
sudo bin/plugin install delete-by-query
1
1

集群有多个节点的情况下,每个节点都需要安装并重启. 

如果想要移除插件,可以执行以下命令:
sudo bin/plugin remove delete-by-query
1
1


二、导入jar包

导包:
elasticsearch-2.3.3/plugins/delete-by-query/delete-by-query-2.3.3.jar
加到工程路径中.


三、修改client的创建方式

Client client = TransportClient.builder()
.settings(settings)
.addPlugin(DeleteByQueryPlugin.class)
.build()
.addTransportAddress(new InetSocketTransportAddress(
InetAddress.getByName("192.168.0.224"), 9300));
1
2
3
4
5
6
1
2
3
4
5
6

加了addPlugin这一行.


四、删除一个type下的所有文档

删除blog/article下的所有文档:


1.命令行方式

CURL -XDELETE "http://192.168.0.224:9200/blog/article/_query" -d '{
"query": {
"match_all": {}
}
}
'
1
2
3
4
5
6
1
2
3
4
5
6


2.java api

import org.elasticsearch.action.deletebyquery.DeleteByQueryAction;
import org.elasticsearch.action.deletebyquery.DeleteByQueryRequestBuilder;
import org.elasticsearch.action.deletebyquery.DeleteByQueryResponse;
import org.elasticsearch.plugin.deletebyquery.DeleteByQueryPlugin;

String deletebyquery = "{\"query\": {\"match_all\": {}}}";

DeleteByQueryResponse response =  new DeleteByQueryRequestBuilder(client,
DeleteByQueryAction.INSTANCE)
.setIndices("blog")
.setTypes("article")
.setSource(deletebyquery)
.execute()
.actionGet();


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息