node.js - 使用 elasticsearch 客户端时主机 header 无效

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

使用 elasticsearch 客户端(来自 elasticsearch npm 版本 15.4.1)时,AWS elasticsearch 服务会提示主机 header 无效。每个请求都会发生这种情况,即使它们有效。

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

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

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

最佳答案

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

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

这里的问题是,AWS ES 集群可能需要主机对象内的主机字段,这会导致“无效主机 header ”问题。希望这将有助于社区编写更好的代码。 引用 https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/16.x/host-reference.html供引用。

关于node.js - 使用 elasticsearch 客户端时主机 header 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57003880/

相关文章:

node.js - 如何在微服务/事件驱动架构中处理 HTTP 请求?

node.js - 如何使用适用于 Visual Studio 的 Node JS 工具在 Visual Studio 中调试 Yeoman 生成器 KO(使用 TypeScript 和 Gulp)Node JS 项目

amazon-web-services - 关于免费套餐上简单 AWS CLI 预置的建议

postgresql - Logstash中的两个输出。一个仅用于某些聚合

java - 如何在 QueryBuilders.matchQuery() 中添加过滤器以根据过滤器获取一些匹配文档

javascript - 如何序列化NodeJS?

javascript - nodejs提交多个请求时请求内存泄漏错误

amazon-web-services - 地形错误 : Invalid value for module argument

amazon-web-services - 使用 S3 URL 从 S3 存储桶读取文本文件内容

elasticsearch - pod 有未绑定(bind)的即时 PersistentVolumeClaims ECK(Kubernetes 上的 Elasticsearch)