You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RestHighLevelClient调用Elasticsearch报UnknownHostException异常求助

问题根因

你注入的HOST参数值为http://go-test,包含了http://协议前缀,而HttpHost构造方法的第一个入参要求传入纯主机名/IP地址,不能携带协议头。程序会将http://go-test整体作为主机域名尝试DNS解析,最终抛出UnknownHostException异常。

解决方案

你可以任选以下任意一种方案修复:

  • 方案一:修改application.properties配置,删除HOST.URL的协议前缀:
# 调整后配置
HOST.URL=go-test

其余代码无需改动即可正常运行。

  • 方案二:如果你需要保留HOST.URL的完整URL格式,可在代码中先解析URL提取纯主机名,还可以同步提取端口、协议参数,避免多配置项不一致的问题:
@Value("${HOST.URL}")
private String hostUrl;

// 初始化RestHighLevelClient前先解析参数
URL url = new URL(hostUrl);
String HOST = url.getHost();
int PORT = url.getPort() == -1 ? url.getDefaultPort() : url.getPort();
String SCHEMA = url.getProtocol();

补充说明

你之前用IP配置时正常,是因为IP配置没有携带协议前缀,符合HttpHost的入参要求;浏览器能正常访问是因为浏览器会自动拆分URL的协议、主机、端口字段,不会将协议头纳入主机名解析逻辑。


内容的提问来源于stack exchange,提问作者pappu_kutty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 08:54:04