Elasticsearch Java Api(六)--DeleteByQuery

来源:互联网 发布:安卓mac修改工具 编辑:程序博客网 时间:2024/06/07 02:05

参考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();          
                                             
0 0