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

简而言之,当 Elasticsearch 遇到比当前使用的 term 更高的 term 时,会发生此错误。这通常发生在集群状态更新期间,节点接收到来自比其当前 term 更高的 term 的更新。要解决此问题,你可以尝试重新启动节点,或者如果问题持续存在,考虑手动更新集群状态。此外,确保集群中的所有节点都运行相同版本的 Elasticsearch,以避免兼容性问题。

日志上下文 #

日志 “Higher term encountered (encountered: " + term + " > used: " + outdated.getTask().term() + “)” 类名是 NodeJoinExecutor.java. 我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入上下文的人参考:

var term = batchExecutionContext.taskContexts().stream().mapToLong(t -> t.getTask().term()).max().getAsLong();
var split = batchExecutionContext.taskContexts().stream().collect(Collectors.partitioningBy(t -> t.getTask().term() == term));
for (TaskContext outdated : split.get(false)) {
    outdated.onFailure(
        new NotMasterException("Higher term encountered (encountered: " + term + " > used: " + outdated.getTask().term() + ")")
    );
}
final var joinTaskContexts = split.get(true);
final var initialState = batchExecutionContext.initialState();