Elasticsearch: Failed to connect to localhost port 9200 - Connection refused

When I tried connecting to Elasticsearch using the curl http://localhost:9200 it is working fine.

But when I run the curl http://IpAddress:9200 it is throwing an error saying

Failed to connect to localhost port 9200: Connection refused

How to resolve this error?


By default it should bind to all local addresses. So, assuming you don't have a network layer issue with firewalls, the only ES setting I can think to check is network.bind_host and make sure it is either not set or is set to 0.0.0.0 or ::0 or to the correct IP address for your network.

Update: per comments in ES 2.3 you should set network.host instead.


Edit /etc/elasticsearch/elasticsearch.yml and add the following line:

network.host: 0.0.0.0

This will "unset" this parameter and will allow connections from other IPs.


Tried everything on this page, and only instructions from here helped.

in /etc/default/elasticsearch, make sure these are un-commented:

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

make sure /var/lib/elasticsearch is owned by elasticsearch user:

chown -R elasticsearch:elasticsearch /var/lib/elasticsearch/

In my case elasticsearch was started. But still had

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

The following command was unsuccessful

sudo service elasticsearch restart

In order to make it work, I had to run instead

sudo systemctl restart elasticsearch

Then it went all fine.