import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.elasticsearch.action.bulk.BulkProcessor;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;

import java.net.InetAddress;

/**
 * Created for Intellij IDEA.
 * Author:e.le.lee.
 * Date: 2017/2/21.
 */

class EsClient {
    private static Log log = LogFactory.getLog(EsClient.class);

    //    用于提供单例的TransportClient BulkProcessor
    private static TransportClient tclient = null;
    private static BulkProcessor staticBulkProcessor = null;

    //【获取TransportClient 的方法】
    public static TransportClient getClient() {
        try {
            if (tclient == null) {
                String EsHosts = "192.168.1.41:9300,192.168.1.42:9300,192.168.1.43:9300";
                Settings settings = Settings.settingsBuilder()
                        .put("cluster.name", "dkes")//设置集群名称
                        .put("tclient.transport.sniff", true).build();//自动嗅探整个集群的状态,把集群中其它机器的ip地址加到客户端中

                tclient = TransportClient.builder().settings(settings).build();
                String[] nodes = EsHosts.split(",");
                for (String node : nodes) {
                    if (node.length() > 0) {//跳过为空的node(当开头、结尾有逗号或多个连续逗号时会出现空node)
                        String[] hostPort = node.split(":");
                        tclient.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(hostPort[0]), Integer.parseInt(hostPort[1])));

                    }
                }
            }//if
        } catch (Exception e) {
            e.printStackTrace();
        }
        return tclient;
    }
}