版本: 7.16-8.5
简而言之,当 Elasticsearch 的 translog 文件损坏时会发生此错误。translog(事务日志)是 Elasticsearch 用于防止数据丢失的持久性层。损坏可能由意外关机或磁盘故障引起。要解决此问题,您可以尝试恢复 translog。如果不起作用,您可能需要删除损坏的 translog 文件。但是,请注意删除 translog 文件可能会导致数据丢失。还建议定期备份数据以防止此类问题。
日志上下文 #
日志 “translog looks like version 1 or later; but has corrupted header” 的类名是 TranslogHeader.java。 我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入上下文的人使用:
// so we know if we grab the first byte; it can be:
// 0x3f => Lucene's magic number; so we can assume it's version 1 or later
// 0x00 => version 0 of the translog
final byte b1 = Channels.readFromFileChannel(channel; 0; 1)[0];
if (b1 == 0x3f) { // LUCENE_CODEC_HEADER_BYTE
throw new TranslogCorruptedException(path.toString(); "translog looks like version 1 or later; but has corrupted header");
} else if (b1 == 0x00) { // UNVERSIONED_TRANSLOG_HEADER_BYTE
throw new IllegalStateException("pre-1.4 translog found [" + path + "]");
}
}





