@Override public void bulkIndex(List<IndexQuery> queries) { BulkRequestBuilder bulkRequest = client.prepareBulk(); for(IndexQuery query : queries){ bulkRequest.add(prepareIndex(query)); } BulkResponse bulkResponse = bulkRequest.execute().actionGet(); if (bulkResponse.hasFailures()) { Map<String, String> failedDocuments = new HashMap<String, String>(); for (BulkItemResponse item : bulkResponse.items()) { if (item.failed()) failedDocuments.put(item.getId(), item.failureMessage()); } throw new ElasticsearchException("Bulk indexing has failures. Use ElasticsearchException.getFailedDocuments() for detailed messages [" + failedDocuments+"]", failedDocuments); } }
public void run() { while (running) { try { IndexRequest req = queue.take(); // Send data BulkRequest bulk = new BulkRequest(); int nb = 0; while (req != null && (nb == 0 || nb < max)) { bulk.add(req); nb++; req = queue.poll(); } if (bulk.numberOfActions() > 0) { BulkResponse rep = node.client().bulk(bulk).actionGet(); for (BulkItemResponse bir : rep.items()) { if (bir.failed()) { LOGGER.warn("Error indexing item: {}", bir.getFailureMessage()); } } } } catch (Exception e) { if (running) { LOGGER.warn("Error while sending indexes", e); } } } }
public void onResponse(BulkResponse response) { logger.info("Bulk request completed"); for (BulkItemResponse itemResponse : response) { if (itemResponse.failed()) { logger.error("Index request failed {index:{}, type:{}, id:{}, reason:{}}", itemResponse.index(), itemResponse.type(), itemResponse.id(), itemResponse.failure().message()); } } }
if (response.hasFailures()) { for (BulkItemResponse r : response.items()) { if (r.failed()) { failedKeys.add(keyMapForDeletion.remove(r.getId()));