具有群集的Elastica客户端

时间:2015-05-26 12:26:11

标签: elasticsearch cluster-computing elastica foselasticabundle

我有一个带Compose.io的Elasticsearch集群,但我无法与Elastica Client连接。这是我的配置:

    $elasticaClient = new \Elastica\Client(array(
        'servers' => array(
            array('host' => 'https://myusername:mypass@aws-us-east-1-portal2.dblayer.com', 'port' => 10050),
            array('host' => 'https://myusername:mypass@aws-us-east-1-portal3.dblayer.com', 'port' => 10062)
        )
    ));
    $elasticaIndex = $elasticaClient->getIndex('test');

我收到了这个错误:

无法解析主机 500内部服务器错误

如何正确连接数据库?

2 个答案:

答案 0 :(得分:5)

必须在没有协议的情况下指定参数host

如果您想使用https,则应将transport参数设置为Https(而不是默认使用的Http)。

$elasticaClient = new \Elastica\Client([
    'connections' => [
        ['transport' => 'Https', 'host' => 'myusername:mypass@aws-us-east-1-portal2.dblayer.com', 'port' => 10050],
        ['transport' => 'Https', 'host' => 'myusername:mypass@aws-us-east-1-portal3.dblayer.com', 'port' => 10062],
    ],
]);
$elasticaIndex = $elasticaClient->getIndex('test');

答案 1 :(得分:3)

要测试您的问题是否与Elastica相关,或者是否存在访问服务的问题(我假设),请使用curl:

curl https://myusername:mypass@aws-us-east-1-portal2.dblayer.com:10050

如果服务器"工作"正如预期的那样,您将获得具有elasticserach服务器状态的JSON结果。在这种情况下,问题是Elastica相关。在所有其他情况下,我认为问题与防火墙设置,证书问题或其他服务器问题有关,并且不是Elastica特定的。

另请注意使用'服务器'不推荐使用Elastica中的数组。而不是服务器连接'应使用相同的参数。