【发布时间】:2015-09-04 08:01:36
【问题描述】:
我正在尝试批量删除 id 来自先前搜索的文档。确定要删除的候选文档的查询正在产生所需的结果(数千条记录),但是批量删除一次仅删除 10 条记录,即使我将原始查询的所有结果都提供给它;
Client client = node.client();
BulkRequestBuilder bulkRequest = client.prepareBulk();
SearchResponse deletes = client.prepareSearch("my_index")
.setTypes("my_doc_type")
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
.setQuery(boolQuery().mustNot(termQuery("tId", transactionId)))
.execute()
.actionGet();
long deleteHits = deletes.getHits().getTotalHits();
if (deleteHits > 0) {
logger.info("Preparing to delete (" + deleteHits + ") " +
"documents from index");
Arrays.asList(deletes.getHits().getHits()).stream().forEach(h ->
bulkRequest.add(client.prepareDelete()
.setIndex("my_index")
.setType("my_doc_type")
.setId(h.getId())));
}
BulkResponse bulkResponse = bulkRequest.execute().actionGet();
if (bulkResponse.hasFailures()) {
throw new RuntimeException(bulkResponse.buildFailureMessage());
}
}
【问题讨论】:
标签: java elasticsearch