📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入

适用版本: 6.8-8.11

1. 错误异常的基本描述 #

在快照恢复或底层文件元数据解析过程中,如果 physicalName 缺失或不合法,会报:

missing or invalid physical file name [physicalName]

2. 为什么会发生这个错误 #

这类异常来自 FileInfo / StoreFileMetadata 解析,不是普通搜索请求问题。源码会先校验 namephysicalNamelengthwrittenBychecksum 等字段;如果 physicalName == null 或不是合法文件名,就直接抛出解析异常。

也就是说,元数据记录本身不完整或被破坏了。

3. 如何排查和解决这个异常 #

  1. 确认异常出现在快照恢复、仓库元数据加载还是文件列表解析阶段。
  2. 检查相关元数据文件是否损坏、缺失或被手工修改。
  3. 查看最近是否有异常中断的恢复、复制或迁移操作。

4. 如何解决这个错误 #

方案一:恢复完整元数据 #

优先从可信来源重新获取完整快照/元数据文件。

方案二:检查文件名合法性 #

如果有中间程序处理过元数据,确认没有把文件名改成非法形式。

方案三:重新执行恢复流程 #

若元数据已不可信,通常需要重新恢复或重新生成受影响的数据。

5. 预防建议 #

  • 不要手工修改底层元数据文件。
  • 对快照和恢复流程做完整性校验。
  • 升级和迁移时使用官方支持链路,避免产生半成品元数据。

6. 小结 #

missing or invalid physical file name 说明底层文件元数据已不完整。修复重点在于恢复可信元数据来源,而不是在查询层继续排查。

相关错误 #

附:日志上下文 #

// 验证文件信息是否完整
if (name == null || Strings.validFileName(name) == false) {
    throw new ElasticsearchParseException("missing or invalid file name [" + name + "]");
} else if (physicalName == null || Strings.validFileName(physicalName) == false) {
    throw new ElasticsearchParseException("missing or invalid physical file name [" + physicalName + "]");
} else if (length < 0) {
    throw new ElasticsearchParseException("missing or invalid file length");
} else if (writtenBy == null) {
    throw new ElasticsearchParseException("missing or invalid written_by [" + writtenBy + "]");
} else if (checksum == null) {