public boolean result(BulkResponse response){ if(null != response && RestStatus.OK == response.status()){ return true; } return false; }
@Override public void afterBulk(long executionId, BulkRequest request, BulkResponse response) { if (log.isDebugEnabled()) { log.debug(String.format("After bulk: %s, actions: %d, status: %s", executionId, request.numberOfActions(), response.status())); } if (!response.hasFailures()) { return; } MutableBoolean inError = new MutableBoolean(false); Arrays.stream(response.getItems()).filter(BulkItemResponse::isFailed).forEach(item -> { if (item.getFailure().getStatus() != RestStatus.CONFLICT) { log.warn("Failure in bulk indexing: " + item.getFailureMessage()); inError.setTrue(); } else if (log.isDebugEnabled()) { log.debug("Skipping version conflict: " + item.getFailureMessage()); } }); if (inError.isTrue()) { log.error(String.format("Elasticsearch bulk %s returns with failures: %s", executionId, response.buildFailureMessage())); if (!continueOnFailure) { abort = true; } } }
private <T> void save( final String index, final String type, final Collection<T> collection, final Function<T, String> idGenerator, final Function<T, String> parentIdGenerator) { if (collection.isEmpty()) { return; } try { final BulkRequestBuilder bulkBuilder = esResource.getClient().prepareBulk(); for (final T t : collection) { final String source = MAPPER.writeValueAsString(t); bulkBuilder.add( esResource .getClient() .prepareIndex(index, type, idGenerator.apply(t)) .setSource(source, XContentType.JSON) .setParent(parentIdGenerator.apply(t))); } final RestStatus status = bulkBuilder.execute().actionGet().status(); if (!status.equals(RestStatus.OK)) { throw new BaleenException("Rest call failed with code " + status.getStatus()); } } catch (final Exception ee) { getMonitor().error("Couldn't persist to Elasticsearch", ee); } }