版本: 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;
}





