簡體   English   中英

具有多個主機的elasticsearch php API

[英]elasticsearch php api with multiple hosts

我按照此鏈接在Azure上創建了Elasticsearch 2節點群集: 此鏈接

安裝和配置順利。

當我開始檢查群集時,我從php客戶端發現了一個奇怪的行為。

我在客戶端中聲明了2個主機:

$ELSEARCH_SERVER = array("dns1:9200","dns2:9200");
$params = array();
$params['hosts'] = $ELSEARCH_SERVER;
$dstEl = new Elasticsearch\Client($params);

預期的行為是它將嘗試將文檔插入“ dns1”,如果失敗,它將自動更改為“ dns2”。 但是,由於某些原因,其中一台服務器在插入時出現故障時,php客戶端會拋出一個異常,表明它無法僅連接到主機。

有什么方法可以使客戶端自動選擇在線服務器?

n

解決方案:調試了elasticsearch php客戶端后,我發現了一個重試機制,如果前一個服務器已關閉,則該機制可讓該客戶端從池中跳到下一個服務器。 默認情況下禁用此機制

要啟用此機制,您需要使用稱為retries的參數初始化Client:

$params = array();
$params['hosts'] = $ELSEARCH_SERVER;    
$params['retries'] = count($ELSEARCH_SERVER);
$dstEl = new Elasticsearch\Client($params);

希望對您有幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM