2

我有一個帶有Compose.io的Elasticsearch集羣,但無法連接到Elastica Client。這是我的配置:帶集羣的Elastica Client

$elasticaClient = new \Elastica\Client(array(
     'servers' => array(
      array('host' => 'https://myusername:[email protected]', 'port' => 10050), 
      array('host' => 'https://myusername:[email protected]', 'port' => 10062) 
     ) 
    )); 
    $elasticaIndex = $elasticaClient->getIndex('test'); 

我得到這個錯誤:

無法解析主機 500內部服務器錯誤

如何正確連接到數據庫?

回答

5

參數host必須指定沒有協議。

如果你想使用https,你應該設置transport參數爲Https(而不是Http默認使用)。

$elasticaClient = new \Elastica\Client([ 
    'connections' => [ 
     ['transport' => 'Https', 'host' => 'myusername:[email protected]', 'port' => 10050], 
     ['transport' => 'Https', 'host' => 'myusername:[email protected]', 'port' => 10062], 
    ], 
]); 
$elasticaIndex = $elasticaClient->getIndex('test'); 
+0

這就是工作,這是從伊戈爾完整的答案代碼: $ elasticaClient =新\彈性曲線\客戶端([ '連接'=> [ [ '運輸'=> 'https' 時, '主機'=> '用戶:**** @ aws-us-east-1-portal3.dblayer.com', '端口'=> 10050, '捲曲'=> [ CURLOPT_SSL_VERIFYPEER =>假, ], ] ], ]); – Siol

3

要測試,如果你的問題是彈性曲線相關或是否有與訪問服務(我以爲)問題,使用捲曲:

curl https://myusername:[email protected]:10050 

如果服務器「作品」預期你會通過彈性服務器狀態獲得JSON結果。在這種情況下,問題與Elastica有關。在所有其他情況下,我認爲問題與防火牆設置,證書問題或其他服務器問題有關,並非特定於Elastica。

請注意,在Elastica中使用'servers'數組已被棄用。應使用具有相同參數的服務器'連接'。

+0

curl在本地和prod上工作,我可以看到JSON的答案,但我無法找出Elastica有什麼問題。 – Siol