在使用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的集群运行状况仪表板上看到这些日志)。
答案 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以供参考。