nodejs中的Elasticsearch连接时没有活动连接错误
Posted
技术标签:
【中文标题】nodejs中的Elasticsearch连接时没有活动连接错误【英文标题】:No living connections Error while Elasticsearch connections in nodejs 【发布时间】:2016-11-22 20:24:51 【问题描述】:我在连接 elasticsearch 连接时遇到了这个问题。
var elasticsearch = require('elasticsearch');
var client = new elasticsearch.Client( host: 'localhost:9200',
log: 'trace');
弹性搜索错误:2016-07-19T19:09:26Z
错误:请求错误,重试——连接 ECONNREFUSED 127.0.0.1:9200
在 Log.error (/root/git_build/FirstMoveChess/node_modules/elasticsearch/src/lib/log.js:225:56)
在 checkRespForFailure (/root/git_build/FirstMoveChess/node_modules/elasticsearch/src/lib/transport.js:195:18)
在 HttpConnector。 (/root/git_build/FirstMoveChess/node_modules/elasticsearch/src/lib/connectors/http.js:154:7)
在 ClientRequest.bound (/root/git_build/FirstMoveChess/node_modules/lodash-node/modern/internals/baseBind.js:56:17)
在 emitOne (events.js:96:13)
在 ClientRequest.emit (events.js:188:7)
在 Socket.socketErrorListener (_http_client.js:308:9)
在 emitOne (events.js:96:13)
在 Socket.emit (events.js:188:7)
在 emitErrorNT (net.js:1272:8)
在 _combinedTickCallback (内部/进程/next_tick.js:74:11)
在 process._tickCallback (internal/process/next_tick.js:98:9)
弹性搜索跟踪:2016-07-19T19:09:27Z
-> 头 http://localhost:9200/
【问题讨论】:
你确定 elastic 正在运行吗? 是的,它正在运行,我用sudo service elasticsearch status
检查了状态,它显示它正在运行。
你的环境是什么样的,你是如何运行节点和弹性的?它们都是在您的裸机上运行,还是在虚拟机/docker 容器中运行一个或两个?当您在浏览器中转到localhost:9200 时会看到什么?
我正在使用 vm 来运行节点和 elasticsearch。我尝试 curl localhost:9200 它给出一个 json 响应。显示 503 错误。
有趣... JSON 响应中有什么?您的节点应用程序和弹性是在同一个虚拟机中运行还是在单独的虚拟机中运行?
【参考方案1】:
我知道这个问题已经很老了,但我想分享你如何解决这个问题。
-
如果您在本地使用 elasticsearch
您必须做的第一件事是在您的机器上运行 elasticsearch。
Error: Request error, retrying -- connect ECONNREFUSED 127.0.0.1:9200
因为上面的消息表明你没有在本地运行 elasticsearch。
所以,请访问link 并按照说明进行操作。
-
Docker 环境
这里变得更加棘手。
首先,按照指令here。
如果您使用的是 node.js 弹性搜索客户端,则必须将 elasticsearch host
指定为 172.24.0.1
。
如果您在docker-compose.yml
中使用container_name
或private IP
或private IP
,则将不起作用。
【讨论】:
你能告诉我更多关于这个 172.24.0.1 的事情吗?我在使用 localhost:9200 创建文档时遇到问题,但我可以在 chrome 中正常浏览它,但在 30-40 秒后不会立即出错【参考方案2】:在 docker-compose.yml 中从 http://localhost:9200 更改为 http://ipaddress:9200 后的 Docker 容器环境
请更改 docker-compose.yml 中与 CORS
相关的以下内容改变这个 ** http.cors.allow-origin=/https?://localhost(:[0-9]+)?/ ** 进入这个
*- http.cors.allow-origin= **
【讨论】:
以上是关于nodejs中的Elasticsearch连接时没有活动连接错误的主要内容,如果未能解决你的问题,请参考以下文章
Elasticsearch:使用最新的 Nodejs client 8.x 来创建索引并搜索
windows安装ElasticSearch的Head可视化插件简单使用并解决不能连接ElasticSearch服务跨域问题
Mysql 忘记密码----修改Navicat的连接密码--以及--(加入安装Navicat时没设置密码)有时新建连接设置密码,连接不成功---的问题解决方法 密码忘记的解决
Elasticsearch:使用 Logstash 构建从 Kafka 到 Elasticsearch 的管道 - Nodejs