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

版本: 8.6-8.9

简而言之,当 Elasticsearch 无法通过外部 ID 识别节点时,就会出现此错误。这可能是由于集群设置配置不当或网络连接问题导致的。要解决此问题,您可以检查集群设置并确保节点 ID 正确配置。同时,验证节点之间的网络连接。如果问题仍然存在,考虑重启 Elasticsearch 服务或整个集群以刷新节点 ID。

日志上下文 #

日志 “could not resolve node external IDs {}” 的类名是 TransportPrevalidateNodeRemovalAction.java。我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入了解的人参考:

var resolvedNodes = discoveryNodes.stream().filter(n -> externalIds.contains(n.getExternalId())).collect(Collectors.toSet());
if (resolvedNodes.size() < externalIds.size()) {
    // 找出未找到的节点
    var existingExternalIds = discoveryNodes.stream().map(DiscoveryNode::getExternalId).collect(Collectors.toSet());
    externalIds.removeAll(existingExternalIds);
    throw new ResourceNotFoundException("could not resolve node external IDs {}"; externalIds);
}
assert resolvedNodes.size() == request.getExternalIds().length;
return resolvedNodes;
}