1. 程式人生 > >elastisearch之java api Transportclient建立連線

elastisearch之java api Transportclient建立連線

ElasticSearch提供了NodeClient,Transport方式。

NodeClient這種方式相當於建立了一個節點,放入叢集中,這個節點不儲存資料,並且不能作為主節點,因為是一個節點,它知道整個叢集的狀態(每個節點在哪,哪些分片在哪個節點上等),這意味著它執行API時不會出現”連跳”。

TransportClient不建立節點,它存在於叢集外部,類似於REST客戶端,只是充當ES叢集和你的應用的通訊層,它知道API,並且能夠在節點間自動輪循、幫你嗅探叢集等。

Transport方式的好處是:

效能更高
本地資源消耗更少
內建連線池

當然也有缺點

當初始化連線時,ElasticSearch必須已啟動,且必須知道叢集中一個節點的IP地址和埠;
可能存在"連跳",浪費一定的網路資源

如果應用的是java語言,一般通過Transport優於node
elasticsearch1.7版本的TransportClient

    Settings settings = ImmutableSettings.settingsBuilder().put("自己的配置","同前").build();
    TransportClient esclient = new TransportClient(settings);
    esclient.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName
("自己的ip"), 應用的埠號));

elasticsearch 5.*版本的TransportClient

    Settings  settings=Settings.builder().put("自己的配置","同前").build();
    TransportClient client=null;
    try {
        client= new PreBuiltTransportClient(settings) .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(("自己的ip"
), 應用的埠號)); }catch(Exception e){ }