//Dstl (c) Crown Copyright 2017 package uk.gov.dstl.baleen.resources; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.util.Map; import org.apache.commons.io.FileUtils; import org.apache.uima.resource.ResourceInitializationException; import org.apache.uima.resource.ResourceSpecifier; import org.elasticsearch.client.Client; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.node.Node; import org.elasticsearch.node.NodeBuilder; public class SharedLocalElasticsearchResource extends SharedElasticsearchResource { private Node node; private Path tmpDir; @Override protected boolean doInitialize(ResourceSpecifier specifier, Map<String, Object> additionalParams) throws ResourceInitializationException { try{ tmpDir = Files.createTempDirectory("elasticsearch"); }catch(IOException ioe){ throw new ResourceInitializationException(ioe); } Settings settings = Settings.builder() .put("path.home", tmpDir.toString()) .build(); node = NodeBuilder.nodeBuilder() .settings(settings) .data(true) .local(true) .clusterName("test_cluster") .node(); return true; } @Override public Client getClient() { return node.client(); } @Override protected void doDestroy() { node.close(); try{ FileUtils.deleteDirectory(tmpDir.toFile()); }catch(IOException ioe){ // Delete what we can, ignore the rest } } }