package org.molgenis.data.elasticsearch.util;
import org.elasticsearch.action.bulk.BulkProcessor;
import org.elasticsearch.action.bulk.BulkRequest;
import org.elasticsearch.action.bulk.BulkResponse;
import org.elasticsearch.client.Client;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class BulkProcessorFactory
{
private static final Logger LOG = LoggerFactory.getLogger(BulkProcessorFactory.class);
public BulkProcessor create(Client client)
{
return BulkProcessor.builder(client, new BulkProcessor.Listener()
{
@Override
public void beforeBulk(long executionId, BulkRequest request)
{
LOG.trace("Going to execute new bulk composed of {} actions", request.numberOfActions());
}
@Override
public void afterBulk(long executionId, BulkRequest request, BulkResponse response)
{
if (response.hasFailures())
{
LOG.error("Error executing bulk: " + response.buildFailureMessage());
}
LOG.trace("Executed bulk composed of {} actions", request.numberOfActions());
}
@Override
public void afterBulk(long executionId, BulkRequest request, Throwable failure)
{
LOG.warn("Error executing bulk", failure);
}
}).build();
}
}