连接拒绝弹性search错误
当我尝试使用curl http://localhost:9200
连接到Elastic Search时,它工作正常。
但是,当我运行curl http://IpAddress:9200
它是抛出一个错误,说connection refused port 9200
。
如何解决这个错误?
默认情况下,它应该绑定到所有本地地址。 所以,假设你没有防火墙的networking层问题,唯一可以考虑检查的ES设置是network.bind_host
,并确保它没有被设置或者被设置为0.0.0.0
或者::0
或者被设置为正确的IP地址为您的networking。
更新:ES 2.3中的每条评论你应该设置network.host
。
编辑/etc/elasticsearch/elasticsearch.yml
并添加以下行:
network.host:0.0.0.0
这将“取消”此参数,并将允许来自其他IP的连接。
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000085330000, 2060255232, 0) failed; error='Cannot allocate memory' (errno=12)
确保服务器已启动。 我看到这个问题,当我的虚拟机太litle RAM和ES无法启动。
sudo systemctl status elasticsearch
上面会显示你是否确实在运行。
在我的情况下elasticsearch开始了。 但还是有
curl: (7) Failed to connect to localhost port 9200: Connection refused
以下命令不成功
sudo service elasticsearch restart
为了使它工作,我不得不运行
sudo systemctl restart elasticsearch
然后它一切正常。
试了这个页面上的所有内容,只有从这里得到的帮助。
在/etc/default/elasticsearch
,请确保它们未被注释:
START_DAEMON=true ES_USER=elasticsearch ES_GROUP=elasticsearch LOG_DIR=/var/log/elasticsearch DATA_DIR=/var/lib/elasticsearch WORK_DIR=/tmp/elasticsearch CONF_DIR=/etc/elasticsearch CONF_FILE=/etc/elasticsearch/elasticsearch.yml RESTART_ON_UPGRADE=true
确保/var/lib/elasticsearch
由elasticsearch用户拥有:
chown -R elasticsearch:elasticsearch /var/lib/elasticsearch/
你为什么不从这个命令行开始:
$ sudo service elasticsearch status
我做到了,得到:
"There is insufficient memory for the Java Runtime..."
然后我编辑/etc/elasticsearch/jvm.options
文件:
... ################################################################ # Xms represents the initial size of total heap space # Xmx represents the maximum size of total heap space #-Xms2g #-Xms2g -Xms512m -Xmx512m ################################################################ ...
这工作像一个魅力。
对于这个问题,我不得不使用: sudo /usr/share/elasticsearch/bin/elasticsearch start
能够得到端口9200/9300(sudo netstat -ntlp)的东西和响应:
curl -XGET http://localhost:9200
这里没有提出的解决scheme为我工作,但最终得到它的工作是将以下内容添加到elasticsearch.yml
network: host: 0.0.0.0 http: port: 9200
之后,我重新启动了服务,现在我可以从虚拟机内部和外部进行调整。 出于某种奇怪的原因,我不得不在虚拟机之前尝试几个不同的curl
调用变体,
curl localhost:9200 curl http://localhost:9200 curl 127.0.0.1:9200
注意:我在Ubuntu 14.04上使用Elasticsearch 5.5
没有什么可以帮助我,但这里是我可以如何解决我的本地Debian上的这个问题: sudo /usr/share/elasticsearch/bin/elasticsearch start
能够得到端口9200/9300(sudo netstat -ntlp)的东西和响应:
curl -XGET http://localhost:9200
我有同样的问题拒绝9200端口连接。 使用命令sudo service elasticsearch status
检查elasticsearch服务sudo service elasticsearch status
。 如果它出现错误,并且你阅读了与Java有关的任何东西,那么问题可能就是你的jvm内存。 你可以在/etc/elasticsearch/jvm.options
编辑它。 对于Amazon环境中的1GB RAM内存机器,我保留了以下configuration:
-Xms128m -Xmx128m
设置完毕并重新启动elasticsearch服务后,它就像一个魅力。 Nmap和UFW(如果你使用本地防火墙)检查也应该是有用的。
在这种情况下,首先你需要使用下面的命令来检查java版本:
java -version
运行这个命令后,你会得到这样的东西:
Java版本“1.7.0_51”OpenJDK运行环境(rhel-2.4.5.5.el7-x86_64 u51-b31)OpenJDK 64位服务器虚拟机(构build24.51-b03,混合模式)
然后使用这个命令:
update-alternatives --config java
并select以下版本
* + 1 /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.51-2.4.5.5.el7.x86_64/jre/bin/java 2 /usr/java/jdk1.8.0_73/jre/bin/ java的
input以保持当前select[+],或inputselect号码:2
curl -XGET http://127.0.0.1:9200
在elasticsearch文件夹下打开你的Dockerfile ,用“network.host = 127.0.0.1”更新“network.host = 0.0.0.0 ” 。 然后重新启动容器。 用curl检查你的连接。
$ curl http://docker-machine-ip:9200 { "name" : "vI6Zq_D", "cluster_name" : "elasticsearch", "cluster_uuid" : "hhyB_Wa4QwSX6zZd1F894Q", "version" : { "number" : "5.2.0", "build_hash" : "24e05b9", "build_date" : "2017-01-24T19:52:35.800Z", "build_snapshot" : false, "lucene_version" : "6.4.0" }, "tagline" : "You Know, for Search" }
我的2美分,
我只是按照Digital Ocean上的安装程序,显然在回购中可用的包不是最新的,我删除了所有东西,并按照从Elastic Search直接安装程序,一切正在工作,基本上是开箱的行为一个本地主机指向9200.同样的事情/问题发现与Kibana,我的解决scheme也是,删除一切,只是按照他们的程序,希望这节省了两个小时的人(我花了如何设置ELK的设置!)
恩