elasticsearch php api有多个主机

时间:2014-08-18 11:49:59

标签: php azure elasticsearch

我按照此链接在Azure上创建了elasticsearch 2节点群集: this link

安装和配置顺利。

当我开始检查群集时,我从php客户端发现了一个奇怪的行为。

我在客户端声明了2个主机:

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

被排除的行为是它会尝试将文件插入&​​#34; dns1"如果失败,它将自动更改为" dns2"。 但是,由于某些原因,当其中一个服务器出现故障时,php客户端会抛出一个异常,它无法连接到主机并且只能连接到主机。

有没有办法让客户自动选择在线服务器?

日Thnx

1 个答案:

答案 0 :(得分:0)

解决方案:在调试了elasticsearch php客户端后,我发现了一个重试机制,允许客户端从池中跳转到下一个服务器(如果前一个服务器已关闭)。 默认情况下禁用此机制

要启用此机制,您需要使用名为retries的参数初始化客户端:

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

希望它会帮助你们