OpenSearch维护结束,indexer:status里catalogsearch_fulltext仍是Processing,后台也无法重新索引。可以reset,但reset只改Magento的状态标记,不会修复OpenSearch磁盘满、别名异常或仍在运行的旧进程。
reset之前先回答两个问题
bin/magento indexer:status ps -ef | grep '[b]in/magento indexer' mysql -e "SELECT * FROM indexer_state WHERE indexer_id='catalogsearch_fulltext'\G"
如果确有reindex进程仍在工作,不要并发启动第二个。确认没有活动进程,并检查cron与Supervisor不会立即再拉起后,才执行:
bin/magento indexer:reset catalogsearch_fulltext bin/magento indexer:reindex catalogsearch_fulltext
重建又卡住就查OpenSearch
curl -s http://127.0.0.1:9200/_cluster/health?pretty curl -s http://127.0.0.1:9200/_cat/indices?v curl -s http://127.0.0.1:9200/_cat/aliases?v curl -s http://127.0.0.1:9200/_cluster/allocation/explain?pretty
集群yellow在单节点上可能只是副本未分配;red、只读索引、磁盘watermark或无主分片则必须先解决。查看var/log/exception.log中的第一条OpenSearch异常,不要只看最后的reindex failed。
磁盘水位触发只读
先释放磁盘并把使用率降到安全范围,再按OpenSearch当前版本文档解除受影响索引的read_only_allow_delete。不要在磁盘仍满时反复解锁,几分钟后还会重新锁上。
完成标准
- indexer:status为Ready;
- 索引别名指向本次新建索引;
- 随机抽查可见、不可见和多Store商品;
- 增量更新一个商品后搜索结果能变化;
- 下一轮cron没有把状态再次留在working。
生产数据大时,先在低峰期预估全量重建耗时,并确认旧索引清理策略,避免每次重建都留下大索引把磁盘重新占满。

