package detective.core.services; import org.elasticsearch.client.transport.TransportClient; import org.elasticsearch.common.settings.ImmutableSettings; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.transport.InetSocketTransportAddress; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class ElasticSearchClientFactory { private ElasticSearchClientFactory() { } private static Logger logger = LoggerFactory.getLogger(ElasticSearchClientFactory.class); private static TransportClient client = null; private static Object mutex = new Object(); private static String hostName; private static int port; public static String getHostName() { return hostName; } public static void setHostName(String esName) { hostName = esName; } public static void setPort(int esPort){ port = esPort; } public static TransportClient getTransportClient() { if (client == null) { synchronized (mutex) { try { Settings settings = ImmutableSettings.settingsBuilder() .put("client.transport.sniff", true) .put("threadpool.bulk.type", "fixed") .put("threadpool.bulk.size", 100) .put("threadpool.bulk.queue_size", 1000) .put("client.transport.ignore_cluster_name", true) // .put("threadpool.bulk", "type", new // String[]{"type", "size", "queue_size"}, new // String[]{"fixed", "100", "1000"}) .build(); settings.getGroups("threadpool").get("bulk").get("type"); client = new TransportClient(settings) .addTransportAddress(new InetSocketTransportAddress( hostName, port)); } catch (RuntimeException e) { logger.error(e.getMessage(), e); throw e; } } } return client; } }