ES错误修复-client读取timeout
报错前环境及现象
- 有一个node机器中断过几个小时服务
- 客户端在某段时间内无任何操作后会报timeou错
- es以及client版本都是7.6.2
- 推断是shard出了问题
- 报错信息
[Failed to execute phase [query], all shards failed]
- 代码段分析:
org.elasticsearch.client.RestClient里的246行,看方法会在向ES集群指定节点发送请求失败后,尝试向其他节点发送请求,都失败后会抛出IOException,以下的修复只针对自己遇见的这问题,但这个报错不仅限于该情况。
修复
- 重置索引:
curl -XPUT 'xx.xx.xx.xx:9200/*/_settings' -d ' { "index" : { "number_of_replicas" : 0 } } '
PUT /*/_settings
{
"index" : { "number_of_replicas" : 0 }
}
- 官方参考链接:
https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-update-settings.html#update-index-settings-api-query-params