如何使用RestHighLevelClient从elasticsearch的索引中删除所有文档

问题描述 投票:0回答:3

我尝试过下面的代码,它工作正常,但它使用 TransportClient 删除所有文档。

DeleteByQueryRequestBuilder deleteByQueryRequestBuilder = DeleteByQueryAction.INSTANCE.newRequestBuilder(transportClient)
                 .filter(QueryBuilders.matchAllQuery())
                 .source(indexName);
         BulkByScrollResponse response = deleteByQueryRequestBuilder
                .filter(QueryBuilders.matchAllQuery()).get()

我正在使用 elasticsearch 6.1.4。 使用RestHighLevelClient从索引中删除所有文档的方法是什么。

elasticsearch elasticsearch-6 elasticsearch-java-api
3个回答
8
投票

我使用的是elasticsearch 6.5.4。在此代码片段中,我使用客户端 RestHighLevelClient。

DeleteByQueryRequest request = new DeleteByQueryRequest(indexName);
request.setQuery(QueryBuilders.matchAllQuery());
BulkByScrollResponse response = client.deleteByQuery(request, RequestOptions.DEFAULT);

RestHighLevelClient
有需要请求的方法 deleteByQuery。在此请求中您可以定义您需要的过滤器。

您可以在这里找到更多信息。


0
投票
如果有人想知道如何通过 id 删除文档列表,可以将以下方法与 RestHighLevelClient 结合使用。我遇到过这个问题,找不到任何有用的资源,因此我在这里发布我的答案,但它并没有直接回答OP的问题。

使用

BulkRequest

删除 API

public void deleteIndexes() { List<String> websitePageList = new ArrayList<>(); websitePageList.add("3123123123"); //Test Data websitePageList.add("8756785678"); websitePageList.add("9673563456"); if (websitePageList != null && !websitePageList.isEmpty()) { BulkRequest request = new BulkRequest(); websitePageList.forEach(pageId -> request.add(new DeleteRequest("content", pageId))); //Where content is index & pageId is Document Id ActionListener<BulkResponse> listener = new ActionListener<BulkResponse>() { @Override public void onResponse(BulkResponse bulkItemResponses) { long deleted = bulkItemResponses.getItems().length; LOG.info("Deleted documents : " + deleted); } @Override public void onFailure(Exception e) { LOG.error("Index has not been correctly removed"); } }; client.bulkAsync(request, RequestOptions.DEFAULT, listener); } }
    

0
投票
在 8.x 版本中看起来就像这样糟糕:

esClient.deleteByQuery(new DeleteByQueryRequest.Builder() .index("my-index") .query( new Query.Builder() .matchAll(QueryBuilders .matchAll() .build()) .build()) .build());
    
© www.soinside.com 2019 - 2024. All rights reserved.