package org.genedb.crawl.elasticsearch; import java.util.EnumSet; import javax.annotation.PostConstruct; import org.apache.log4j.Logger; import org.elasticsearch.action.admin.cluster.health.ClusterHealthStatus; import org.elasticsearch.client.Client; import org.elasticsearch.common.settings.ImmutableSettings; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.node.Node; import static org.elasticsearch.node.NodeBuilder.nodeBuilder; public class LocalConnection extends Connection { private Logger logger = Logger.getLogger(LocalConnection.class); Client client; Node node; String pathData; String pathLogs; public void setPathData(String pathData) { this.pathData = pathData; } public void setPathLogs(String pathLogs) { this.pathLogs = pathLogs; } @Override @PostConstruct public void configure () { Settings settings = ImmutableSettings.settingsBuilder() .put("path.logs",pathLogs) .put("path.data",pathData) //.put("name", "creepy crawler") //.put("cluster.name", "crawl") .build(); node = nodeBuilder().settings(settings).data(true).local(true).node(); logger.info("Started local node at " + pathData + " settings " + node.settings().getAsMap()); client = node.client(); waitForStatus(client, EnumSet.of(ClusterHealthStatus.GREEN, ClusterHealthStatus.YELLOW)); logger.info("Cluster initialized."); } @Override public Client getClient() { return client; } @Override public void close() { if (client != null) { client.close(); } if (node != null) { node.close(); } } @Override public String toString() { return String.format("%s, Data: %s, Logs: %s", super.toString(), pathData, pathLogs); } }