I have set up Elastic Search 2.3.0 as a service in an Azure VM with Windows Server 2012 R2. I can access elastic search instance from within the server using
http://localhost:9200
but I cannot access from outside the server.
What have I tried?
Tried this with VM Classic as well.
Also for testing whether the VM is alright, I had set up IIS in that machine, opened up the port 80. The default IIS page is accessible from outside.
Only thing I have not tried is setting ES in a Linux VM.
I can't find anything in the elasticsearch logs. On the browser (Chrome), there are no logs in the Network. It just spins, waiting for the server, and snaps with "ERR_EMPTY_RESPONSE".
Can anybody that had done this shed some light please?
UPDATE: Here is what I can see in netstat:
TCP 127.0.0.1:9200 machine-name:0 LISTENING
TCP 127.0.0.1:9300 machine-name:0 LISTENING
Starting with ES 2.0, the elasticsearch process only binds to localhost, which explains why you can query ES from inside but not from the outside.
You need to change the following setting in your elasticsearch.yml
configuration file:
network.host: 0.0.0.0
Resolved for me on Windows server 2012 with Elasticsearch 7.1.1 adding in C:\ProgramData\Elastic\Elasticsearch\config\elasticsearch.yml the following config:
http.host: 0.0.0.0
I had the same case. Looking in the log
tail -f /var/log/elasticsearch/NODE.log
I saw this:
[NODE_NAME] publish_address {10.XXX.XXX.XXX:9300}, bound_addresses {10.XXX.XXX.XXX:9300}
[NODE_NAME] bound or publishing to a non-loopback address, enforcing bootstrap checks
[NODE_NAME] node validation exception
[1] bootstrap checks failed
[1]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
[NODE_NAME] stopping ...
[NODE_NAME] stopped
Solution:
Modify the archive /etc/elasticsearch/elasticsearch.yml
in the line discorvery seed with this:
discovery.seed_hosts: ["127.0.0.1", "[::1]"]
Done.
I would suggest to set the network.host to special values
eg.
network.host: [_local_, _site_]
This works for me.
Please note that for me success was achieved only after setting
http.host: 0.0.0.0
instead of
http.host: "localhost"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With