首页 > 解决方案 > Cloud Id 未在 Node.js Elasticsearch 客户端中设置正确的主机

问题描述

我正在构建一个 Node.js 应用程序,以将文档批量发送到 Elastic.co 上的 Elasticsearch 集群。

这是package.json:

{
  "name": "bulk-dispatcher",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "type": "module",
  "scripts": {
    "start": "nodemon index.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "btoa": "^1.2.1",
    "dotenv": "^9.0.0",
    "elasticsearch": "^16.7.2",
    "express": "^4.17.1",
    "express-bearer-token": "^2.4.0",
    "jwt-decode": "^3.1.2",
    "querystring": "^0.2.1",
    "rollbar": "^2.21.1",
    "winston": "^3.3.3"
  },
  "devDependencies": {
    "nodemon": "^2.0.7"
  }
}

所以你可以看到 dot.env 和 elasticsearch 已经安装好了。

我已经查阅并使用了 JS 客户端连接到集群的示例,这里是代码:

import es from 'elasticsearch'

import dotenv from 'dotenv'
dotenv.config()

const client = new es.Client({
    cloud: {
      id: process.env.ELASTIC_CO_SCOTTIE_PROD_CLOUD_ID
    },
    auth: {
        apiKey: {
            id: process.env.ELASTIC_CO_API_KEY_ID,
            api_key: process.env.ELASTIC_CO_API_KEY
        }
    }
})

export default client

我已经验证了 process.env 的值是正确的;我们为我们的 PHP 客户端使用这些相同的凭据,它连接得很好。

当我尝试使用此客户端时,此错误显示:

POST http://localhost:9200/events/_search => connect ECONNREFUSED 127.0.0.1:9200

现在该错误表明它正在尝试连接到不存在的本地 ES。

Elasticsearch 文档说使用您的云 ID 进行连接应该为您的集群设置正确的主机。显然这没有发生。

你能看到我在这里做错了什么吗?

感谢您的想法。

问候,史蒂夫

标签: node.jsauthenticationelasticsearchclient

解决方案


推荐阅读