无法连接到 XX.XX.XXX.XX 端口 9200:EC2 上的连接被拒绝

Failed to connect to XX.XX.XXX.XX port 9200: Connection refused on EC2

我已经在 EC2 Ubuntu 14 服务器上安装了 Elasticsearch。

我可以看到它是 运行:

elastic@ip-xxx-xx-xx-xxx:~$ curl -get localhost:9200
{
  "name" : "ip-xxx-xx-xx-xxx",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "V6axWUV9SoqABC8sX62XMQ",
  "version" : {
    "number" : "7.0.1",
    "build_flavor" : "default",
    "build_type" : "deb",
    "build_hash" : "e4efcb5",
    "build_date" : "2019-04-29T12:57:03.145736Z",
    "build_snapshot" : false,
    "lucene_version" : "8.0.0",
    "minimum_wire_compatibility_version" : "6.7.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

我已将其添加到安全组:

但是我无法远程连接:

C:\>curl -get http://XX.XX.XXX.XX:9200/
curl: (7) Failed to connect to XX.XX.XXX.XX port 9200: Connection refused

netstat -nlp |grep 9200:

tcp6       0      0 127.0.0.1:9200          :::*                    LISTEN      29467/java   
tcp6       0      0 ::1:9200                :::*                    LISTEN      29467/java 

这是elasticsearch.yml去掉所有评论后的内容:

path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch

请在elasticsearch.yml中添加以下行并重启elasticsearch服务:

network.host: xxx.xxx.xxx.xxx 

xxx.xxx.xxx.xxx 是你的 elasticsearch 服务器的 IP 地址

我已经解决了问题

我必须配置的第一件事是 network.host,但非常重要的是要注意它不适用于我尝试从客户端连接的 IP,因为这是 EC2 public 知识产权。我不得不使用 EC2 私有 IP。

但后来我不断收到同样的错误,我发现集群协调算法在 Elasticsearch 7.0 中发生了变化,为了安全起见,它需要一些特定的配置。 Elastic 放宽了这一要求(也就是说,他们 运行 在 less-safe 模式下)当一个人只绑定到本地主机时,但是 if/when 一个改变 network.host 他们强制他配置集群安全。

因此,由于我使用的是单节点集群,因此我必须将以下设置添加到 elasticsearch.yml 中的发现部分:

discovery.type: single-node