Elasticsearch2.x --DeleteByQuery


一、安裝插件

要刪除某個索引的一個type下的所有文檔,相當於關系型數據庫中的清空表操作。查閱了一些資料可以通過Delete-by-Query插件刪除,首先使用插件管理器安裝Delete-by-Query插件:

sudo bin/plugin install delete-by-query

離線方式與head類似,解壓放置elasticsearch/plugins/下即可。

集群有多個節點的情況下,每個節點都需要安裝並重啟.
如果想要移除插件,可以執行以下命令:

sudo bin/plugin remove delete-by-query

二、導入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));

加了addPlugin這一行.

四、刪除一個type下的所有文檔

刪除blog/article下的所有文檔:

1.命令行方式

CURL -XDELETE "http://192.168.0.224:9200/blog/article/_query" -d '{
"query": {
    "match_all": {}
  }
}
'

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();

 

 

from:http://blog.csdn.net/napoay/article/details/52038619


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM