No Connection On Localhost To Elasticsearch On OSX

tl;dr Comment a line in /etc/hosts.

After the update to OSX 10.10 Yosemite, I also updated everything I've installed with brew. Sadly after this update, I couldnt get Elasticsearch to accept connections again. It started normally without any error but curl showed my the very lovely connection refused error:

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

Or with more verbosity:

$ curl -i -v localhost:9200
* Rebuilt URL to: localhost:9200/
* Hostname was NOT found in DNS cache
*   Trying ::1...
* connect to ::1 port 9200 failed: Connection refused
*   Trying fe80::1...
* connect to fe80::1 port 9200 failed: Connection refused
* Failed to connect to localhost port 9200: Connection refused
* Closing connection 0
curl: (7) Failed to connect to localhost port 9200: Connection refused

First I started to search in Elasticsearch configs et al but found the error somewhere on Stackoverflow. It seems like OSX is doing something weird when upgrading to Yosemite. So the easy fix is to disable the IPv6 entry in your /etc/hosts. Just comment the following line in this file:

fe80::1%lo0    localhost

After this Elasticsearch should work again normally.

$ curl -i localhost:9200
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Content-Length: 335

{
  "status" : 200,
  "name" : "War",
  "cluster_name" : "elasticsearch_ben",
  "version" : {
    "number" : "1.4.2",
    "build_hash" : "927caff6f05403e936c20bf4529f144f0c89fd8c",
    "build_timestamp" : "2014-12-16T14:11:12Z",
    "build_snapshot" : false,
    "lucene_version" : "4.10.2"
  },
  "tagline" : "You Know, for Search"
}

Related Posts