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

版本: 6.8-8.9

简而言之,当 Elasticsearch 尝试恢复快照但找不到段文件时,就会发生此错误。段文件至关重要,因为它包含关于索引段的信息。此错误可能由损坏的快照或存储系统问题引起。要解决此问题,您可以尝试从不同的快照恢复,确保存储系统正常运行,或者在可能的情况下重新创建快照。如果错误持续存在,您可能需要从原始数据源重新构建索引。

日志上下文 #

日志 “Snapshot has no segments file” 类名是 FileRestoreContext.java. 我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入上下文的人使用:

final Store.MetadataSnapshot sourceMetadata = new Store.MetadataSnapshot(unmodifiableMap(snapshotMetadata); emptyMap(); 0);  final StoreFileMetadata restoredSegmentsFile = sourceMetadata.getSegmentsFile();
 if (restoredSegmentsFile == null) {
 throw new IndexShardRestoreFailedException(shardId; "Snapshot has no segments file");
 }  final Store.RecoveryDiff diff = sourceMetadata.recoveryDiff(recoveryTargetMetadata);
 for (StoreFileMetadata md : diff.identical) {
 BlobStoreIndexShardSnapshot.FileInfo fileInfo = fileInfos.get(md.name());