OpenSearch reIndex()操作时PHP客户端出现NoNodesAvailableException错误排查
问题:AWS OpenSearch执行reIndex时触发NoNodesAvailableException错误
环境与操作背景
- 集群:Amazon OpenSearch Service
- 客户端:Laravel服务中使用7.17.2版本的
elasticsearch/elasticsearch客户端(明确该客户端并非OpenSearch官方适配版本,但兼容当前需求,因代码库切换成本高暂未更换) - 操作目标:执行
reIndex()操作修复索引映射爆炸(字段映射超1000个)问题,操作参数包含一段painless脚本,用于将指定字段从对象格式转换为嵌套格式,并同步调整对应字段映射
本地测试结果
将AWS集群的索引快照恢复至本地同版本OpenSearch的Docker容器中,执行相同reIndex操作可成功完成,仅出现CPU使用率较高的情况。
AWS环境异常现象
在AWS集群执行相同操作时,**仅在操作接近结束阶段(新建索引的lucene文档数已接近原索引)**触发如下错误:
production.ERROR: No alive nodes found in your cluster {"exception":"[object] (Elasticsearch\Common\Exceptions\NoNodesAvailableException(code: 0): No alive nodes found in your cluster at /var/www/html/vendor/elasticsearch/elasticsearch/src/Elasticsearch/ConnectionPool/StaticNoPingConnectionPool.php:64)"} []
In StaticNoPingConnectionPool.php line 64:
No alive nodes found in your cluster
同时观察到操作期间AWS OpenSearch集群的CPU、内存使用率均超过95%。
核心疑问
集群的高资源占用是否会导致客户端判定集群无响应?操作中断后,后续预设的别名切换步骤未执行。
内容的提问来源于stack exchange,提问作者Nicholas O'Connell
相关产品推荐
相关产品推荐

