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

版本: 8.6-8.9

简而言之,当Elasticsearch无法识别命令或请求中指定的节点ID时,就会出现此错误。这可能是由于节点ID不正确、节点宕机或不可访问,或者网络问题造成的。要解决此问题,您可以验证节点ID,确保所有节点都正常运行,并检查网络连接。如果问题仍然存在,可以考虑检查集群健康状况和日志以获取更详细的信息。

日志上下文 #

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

var resolvedNode = Arrays.stream(ids).map(discoveryNodes::get).filter(Objects::nonNull).collect(Collectors.toSet());
if (resolvedNode.size() < ids.length) {
    // find out which one wasn't found
    var existingNodeIds = discoveryNodes.stream().map(DiscoveryNode::getId).collect(Collectors.toSet());
    var idsNotFound = Arrays.stream(ids).filter(id -> existingNodeIds.contains(id) == false).collect(Collectors.toSet());
    throw new ResourceNotFoundException("could not resolve node IDs {}"; idsNotFound);
}
return resolvedNode;
}
// Resolve by external ID
logger.debug("resolving nodes for prevalidation using external ID");