版本: 7.6-7.14
简要来说,当Elasticsearch在从事务日志(translog)读取后无法重新应用过滤器时,会出现此错误。这可能是由于事务日志损坏或过滤器本身存在问题。要解决此问题,您可以尝试使用Elasticsearch提供的事务日志截断工具来清除事务日志。或者,您可以检查过滤器是否存在任何不一致或错误并进行修正。如果问题仍然存在,请考虑对数据进行重新索引。
日志上下文 #
日志"Failed to reapply filters for [" + id + “] after reading from translog"的类名是 ShardGetService.java。我们从Elasticsearch源代码中提取了以下内容,供那些寻求深入上下文的人参考:
// 通过从映射重新应用源过滤器来确保源一致(可能也会将源设置为null)
if (forceSourceForComputingTranslogStoredFields == false) {
try {
source = indexShard.mapperService().documentMapper().sourceMapper().applyFilters(source; null);
} catch (IOException e) {
throw new ElasticsearchException("Failed to reapply filters for [" + id + "] after reading from translog"; e);
}
} else {
// 慢速路径:从原始源重新创建存储字段
assert source != null : "translog中的原始源必须存在";
SourceToParse sourceToParse = new SourceToParse(shardId.getIndexName(); type; id; source;





