All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.inbot.elasticsearch.bulkindexing.LoggingStatusHandler Maven / Gradle / Ivy

package io.inbot.elasticsearch.bulkindexing;

import static com.github.jsonj.tools.JsonBuilder.field;
import static com.github.jsonj.tools.JsonBuilder.object;

import com.github.jsonj.JsonObject;
import java.util.concurrent.atomic.AtomicLong;
import org.slf4j.Logger;

/**
 * Simple bulk indexer status handler that logs important events.
 */
public class LoggingStatusHandler implements BulkIndexerStatusHandler {
    private final Logger log;
    private final boolean verbose;
    public LoggingStatusHandler(Logger log) {
        this.log = log;
        this.verbose = false;
    }

    public LoggingStatusHandler(Logger log, boolean verbose) {
        this.log = log;
        this.verbose = verbose;
    }

    AtomicLong ok = new AtomicLong();
    AtomicLong error = new AtomicLong();

    @Override
    public JsonObject status() {
        return object(
                field("reindex_success", error.get()==0),
                field("total", ok.get() + error.get()),
                field("indexed", ok.get()),
                field("errors", error.get()
            ));
    }

    @Override
    public void ok(JsonObject item) {
        ok.incrementAndGet();
    }

    @Override
    public void fail(String message) {
        log.error("fail " + message);
    }

    @Override
    public void error(String code, JsonObject details) {
        error.incrementAndGet();
        log.error("error" + code + " " + details.toString());
    }

    @Override
    public void start() {
        log.info("bulk index");
    }

    @Override
    public void done() {
        log.info(status().toString());
    }

    @Override
    public void flush() {
        if(verbose) {
            log.info(status().toString());
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy