我按照此链接在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);
被排除的行为是它会尝试将文件插入" dns1"如果失败,它将自动更改为" dns2"。 但是,由于某些原因,当其中一个服务器出现故障时,php客户端会抛出一个异常,它无法连接到主机并且只能连接到主机。
有没有办法让客户自动选择在线服务器?
日Thnx
答案 0 :(得分:0)
解决方案:在调试了elasticsearch php客户端后,我发现了一个重试机制,允许客户端从池中跳转到下一个服务器(如果前一个服务器已关闭)。 默认情况下禁用此机制
要启用此机制,您需要使用名为retries的参数初始化客户端:
$params = array();
$params['hosts'] = $ELSEARCH_SERVER;
$params['retries'] = count($ELSEARCH_SERVER);
$dstEl = new Elasticsearch\Client($params);
希望它会帮助你们