【问题标题】:How to delete all documents from index in an elasticsearch using RestHighLevelClient如何使用 RestHighLevelClient 从弹性搜索中的索引中删除所有文档
【发布时间】:2018-10-29 07:44:38
【问题描述】:

我尝试了下面的代码,它工作正常,但它使用 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


【解决方案1】:

我正在使用弹性搜索 6.5.4。在这个 sn-p 中,我使用客户端 RestHighLevelClient。

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

RestHighLevelClient 类具有需要请求的方法 deleteByQuery。在这个请求中,您可以定义您需要的过滤器。

您可以找到更多信息here.

【讨论】:

  • 您能否为您的答案添加一些解释?
【解决方案2】:

如果有人想知道如何按 id 删除文档列表,可以将以下方法与 RestHighLevelClient 一起使用。我遇到了这个问题并且找不到任何有用的资源,因此我在这里发布我的答案,它不直接回答 OP 的问题。

Delete APIBulkRequest

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-02
    • 2021-10-24
    • 2021-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-17
    • 1970-01-01
    相关资源
    最近更新 更多