Rails:searchkick gem和amazon ec2实例,Faraday :: ConnectionFailed

时间:2018-05-15 12:26:22

标签: ruby-on-rails amazon-web-services elasticsearch searchkick

我创建了一个amazon ec2实例,并通过ssh成功登录到实例。现在我正在尝试使用rails cModel.reindex重新索引模型,但我收到以下错误:

Faraday::ConnectionFailed: Failed to open TCP connection to localhost:9200 (Connection refused - connect(2) for "localhost" port 9200)

我已将所有tcp端口(80,22,5432,433,9200,9300)添加到相应的安全组。

我还编辑了/etc/elasticsearch/elasticsearch.yml文件,其中包含以下信息:

cluster.name: esonaws
bootstrap.mlockall: true
network.host: xxx.xx.xx.xx(this is the instance private ip)
http.port: 9200
discovery.zen.ping.unicast.hosts: xxx.xx.xx.xx(this is the instance private ip)

然后做了sudo service elasticsearch restart,弹性搜索开始正常,但是当我再次尝试重新索引时,会再次弹出相同的错误。

顺便说一句,当我在ssh curl localhost:9200/_cluster/health?pretty内执行此操作时,我得到了这个:

curl: (7) Failed to connect to localhost port 9200: Connection refused

但如果我使用amazon ec2 instanceit的私有ip工作并返回所有集群信息。

curl http://xxx.xx.xx.xx:9200/_cluster/health?pretty^C

我在这里可能缺少的任何想法以及如何使其发挥作用?

1 个答案:

答案 0 :(得分:0)

Elasticsearch绑定到network.host,因此,如果要使用localhost而不是专用ip,则需要使用network.host: _local_

Relevant docs