Elasticsearch 連接ES的兩種方式


1、創建客戶端節點來連接:

其中client(true)將node指定為客戶端節點,所以這個不能寫漏掉,客戶端節點是不持有數據的,

Java代碼   收藏代碼
  1. Node node = NodeBuilder.nodeBuilder().clusterName(clusterName).client(true)  
  2.            .node();  
  3. Client client = node.client();   

優勢:

       通過此方式創建客戶端能知道所有關於集群、索引、分片的信息,在操作上可以更快的執行。 

不足之處:

       啟動時客戶端節點必須加入集群並建立與其他節點的連接,此過程需要消耗時間和資源。

       當ES集群處於另一個局域網中時就不行了,所以一般不建議使用此方式。

 

2、使用傳輸機客戶端來連接(即使用TransportClient來創建):

Java代碼   收藏代碼
  1. Settings settings = Settings.builder().put("cluster.name",clusterName).build();  
  2. client = TransportClient.builder().settings(settings).build();  
  3. client.addTransportAddress(new InetSocketTransportAddress(  
  4.                            InetAddress.getByName(host), port));  

優勢:

       啟動速度快,不需要像前者那么多的socket連接。

不足之處:

       因為它不想前者那樣知道集群、索引、分片的這些信息,所以在分發數據和查詢上沒前者快,不能直接發送到指定的節點或直接從某個節點去取數據,需要ES在其中進行一些額外的轉發才能完成。      

 

TransportClient類的可用配置:

client.transport.sniff:默認值為false,當設置為true時,ES會讀取集群中的節點信息。

client.transport.ignore_cluster_name:默認值為false,當設置為true時,ES會忽視配置中的集群名稱並嘗試連接到某個可連接集群上,而不管集群名稱是否匹配。

client.transport.ping_timeout:默認為5s,此參數指定了ping命令響應的超時時間。

client.reansport.nodes_sampler_interval:默認為5s,此參數指定了檢查節點可用性的時間間隔。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM