我们有elasticsearch 8.7集群,一个master和三个node是数据。
php配置
stream timeout => 10 mins
官方客户端示例化https://github.com/elastic/elasticsearch-php
ClientBuilder::create()
->setHttpClientOptions([
'no_proxy' => true,
'proxy' => '',
])
->setHosts(["http://elastichost:9200"])->build();
这里有个问题
如果我们在每个节点上放置20个分片,脚本运行良好,并在几个小时后成功。我们有最新的指数,一切都很好
但是如果我们在每个节点上放置几个分片(1,2,5),脚本会在10分钟后失败。测试代码显示,根据stream_timeout,我们超过了10分钟的超时时间,并显示错误消息,例如“不存在活动节点”。
调查代码
当脚本确定主机已死亡时,尝试执行ping操作,但未成功
->setNodePool(
new SimpleNodePool(
new RoundRobin(),
new ElasticsearchResurrect()
)
)
它保持死连接并尝试执行请求。此外,我们必须通过一些大的值不。的重试次数,否则重试次数超过(
所以,我的主要问题是:
如何绕过这个问题?没有.shards怎么会影响这个呢?
p.s:增加超时是足够简单的,需要理解和找到更优雅的方式
1条答案
按热度按时间lxkprmvk1#
唯一的解决办法是增加超时时间