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

版本: 7.1-7.15

简而言之,当 Elasticsearch 在集群中遇到高于当前状态术语(term)的术语时,会发生此错误。这通常发生在主节点选举过程或节点尝试加入集群时。要解决此问题,您可以尝试重启 Elasticsearch 节点,确保所有节点运行相同版本的 Elasticsearch,或检查节点之间的网络连接。如果问题持续存在,您可能需要考虑重新配置集群或增加主节点选举超时时间。

日志上下文 #

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

// MasterService 使用的当前状态可能已经被更高术语的(不同的)主节点更新
// 停止处理当前的集群状态更新;因为没有必要继续计算它
// 因为它稍后会被 Coordinator.publish(...) 拒绝
if (currentState.term() > term) {
 logger.trace("encountered higher term {} than current {}; there is a newer master"; currentState.term(); term);
 throw new NotMasterException("Higher term encountered (current: " + currentState.term() + " > used: " +
 term + "); there is a newer master");
} else if (currentState.nodes().getMasterNodeId() == null && joiningTasks.stream().anyMatch(Task::isBecomeMasterTask)) {
 assert currentState.term() < term : "there should be at most one become master task per election (= by term)";
 final CoordinationMetadata coordinationMetadata =
 CoordinationMetadata.builder(currentState.coordinationMetadata()).term(term).build();