使用elasticsearch客户端时主机头无效

Tan*_*Boy 4 amazon-web-services node.js elasticsearch aws-lambda

使用elasticsearch客户端(从elasticsearch npm版本15.4.1开始)时,AWS elasticsearch服务抱怨主机头无效。每个请求都会发生这种情况,即使它们有效。

我仔细检查了初始化elasticsearch客户端的配置,参数“host”的格式正确。

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

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

Tan*_*Boy 10

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

host: {
    protocol: 'https',
    host: 'search-xxx.us-west-1.es.amazonaws.com',
    port: '443',
    path: '/'
Run Code Online (Sandbox Code Playgroud)

这里的问题是,AWS ES Cluster 可能需要主机对象内的主机字段,这会导致“无效的主机标头”问题。希望这将帮助社区编写更好的代码。请参阅https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/16.x/host-reference.html进行参考。