Я пытаюсь выполнить массовое удаление документов, чьи идентификаторы получены из предыдущего поиска. Запрос для определения документов, которые являются кандидатами на удаление, дает желаемые результаты (тысячи записей), однако массовое удаление удаляет только 10 записей за раз, даже если я загружаю все результаты исходного запроса;Elasticsearch java API bulk delete not working
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());
}
}
Сканирование и прокрутка работали как шарм - спасибо! – mrmarbles