2017-04-12 57 views
0

目前我連接到ElasticSearch集羣如下:如何使用Elastisch連接到多個ElasticSearch主機?

(esr/connect "localhost:9200") 

但我關心的可用性,以便計劃運行ElasticSearch集羣。

如何修改我的Elastisch代碼以連接到羣集(以便如果節點不可用,我可以回退到另一個節點)?它是否默認這樣做? ElasticSearch java休息客戶端似乎提供這種功能,Elastisch也是如此?

回答

0

使用像elasticsearch這樣的服務的好處之一是它處理等式的可用性部分,因爲ES本身將處理節點關閉。您必須智能配置它,這不在此問題/答案的範圍之內。

這裏的connect函數實際上並不連接;它基本上只是創建一個URI和選項,當你調用一個像clojurewerkz.elastisch.rest.document/search這樣的函數時,就給它連接數據,然後在實際的網絡操作中使用它。

因此,您可以根據需要隨時調用esr/connect儘可能多的URL,但不需要。我建議閱讀elasticsearch's documentation以熟悉有關節點,集羣,索引,碎片等的體系結構,並正確配置您的elasticsearch集羣。但就代碼本身而言,您與架構無關,無需擔心這些細節。 elasticsearch的REST API也是如此,因此彈性包裝器也提供了這個功能。

+0

謝謝你的答案喬希。那麼連接功能是否會「發現」集羣中的其他URL?如果沒有,我不知道如果我最初給它的網址不可用,這可能會如何工作。我必須明顯地錯過了一些東西。 – bm1729

+0

順便提一下,我找到了一個名爲spandex的庫,它允許您在創建客戶端時指定一個url集合(按照官方的elasticsearch rest客戶端),所以我覺得這可能更適合我的需求。 – bm1729

+0

斯潘德克斯也做節點嗅探,你可以在連接時傳遞一個節點,它會自己發現其他節點並自動連接它們。 – mpenet

1

你可以有多個主機集羣的設置,這樣可以可以使用elasticsearch.yaml配置文件等配置:

..... 
..... 
discovery.zen.ping.unicast.hosts: ['192.168.10.1:9300', '192.168.10.2:9300'] 

also elect one node as master and other as slave or data node 

# Allow this node to be eligible as a master node (enabled by default): 
# 
node.master: true 
# 
# Allow this node to store data (enabled by default): 
# 
node.data: true 

你也可以探索通過以下多種差不多的鏈接 about Zen discovery in clustered enviroment

Important configuration for elasticsearch

相關問題