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

如何在Angular5的Elasticsearch.js客户端中排除主机端口号

解决Elasticsearch.js自动添加默认端口9200的问题

我明白你遇到的困扰了——Elasticsearch.js客户端在你配置空端口时,依然会自动补上默认的9200,导致请求地址不符合预期。这是因为当你在host对象中设置port: ''时,客户端会将空字符串视为无效值,转而使用Elasticsearch的默认端口9200,而非HTTPS的默认端口443。

下面给你两种可行的解决方案:

方案一:直接使用完整URL作为host参数

最简单的方式是直接把目标地址作为字符串传给host,这样客户端会完全按照你提供的地址发起请求,不会自动添加任何额外端口:

private connect() {
  this.client = new Client({
    host: 'https://myelasticsearch-api.xyz.com/api1/1.0',
    headers: {
      'authorization': 'Bearer ' + this.accessTolken
    },
    log: 'warning'
  });
}

注意这里把headers直接放在顶层配置里,而非嵌套在host对象中——当使用字符串形式的host时,headers需要放在Client的根配置下才能生效。

方案二:正确配置host对象(使用HTTPS默认端口)

如果你更倾向于使用对象形式的host配置,可以明确指定port: 443(HTTPS的默认端口),或者干脆不设置port参数,客户端会自动根据协议匹配对应默认端口:

private connect() {
  this.client = new Client({
    host: {
      host: 'myelasticsearch-api.xyz.com',
      protocol: 'https',
      port: 443, // 明确指定HTTPS默认端口,也可以直接删除这个参数
      headers: {
        'authorization': 'Bearer ' + this.accessTolken
      },
      path: '/api1/1.0'
    },
    log: 'warning'
  });
}

删除port参数后,客户端会自动适配协议的默认端口:HTTPS对应443,HTTP对应80,这样就不会再自动加上9200了。

另外提一句,你代码里的accessTolken可能是笔误,正确拼写应该是accessToken,不过这不会影响端口问题的解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:13:16