使用Elasticsearch客户端时无效的主机头

时间:2019-07-12 09:15:13

标签: node.js amazon-web-services elasticsearch aws-lambda

在使用elasticsearch客户端(来自elasticsearch npm 15.4.1版)时,AWS elasticsearch服务会抱怨主机头无效。即使每个请求都起作用,也会发生这种情况。

我仔细检查了用于初始化Elasticsearch客户端的配置,并正确形成了参数“主机”。

let test = require('elasticsearch').Client({
    host: 'search-xxx.us-west-1.es.amazonaws.com',
    connectionClass: require('http-aws-es')
});

我希望没有相应的InvalidHostHeaderRequests即可获得干净的ElasticsearchRequest(我可以在Amazon Elasticsearch Service的集群运行状况仪表板上看到这些日志)。

1 个答案:

答案 0 :(得分:1)

发现了问题。 当使用elasticsearch库连接到AWS ES集群时,以前的语法可能会导致问题,因此初始化客户端的最佳方法是指定整个“主机”对象,如下所示:

host: {
    protocol: 'https',
    host: 'search-xxx.us-west-1.es.amazonaws.com',
    port: '443',
    path: '/'

这里的问题是,AWS ES Cluster可能期望宿主对象内的host字段,这会导致“ Invalid Host Header”问题。希望这将有助于社区编写更好的代码。 请参阅https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/16.x/host-reference.html以供参考。