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){
        }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章