我已将Elastic Search 2.3.0设置为具有Windows Server 2012 R2的Azure VM中的服务。我可以使用
从服务器内访问弹性搜索实例http://localhost:9200
但我无法从服务器外部访问。
我尝试了什么?
也尝试使用VM Classic。
另外,为了测试VM是否正常,我在该机器中设置了IIS,打开了端口80.可以从外部访问默认的IIS页面。
我唯一没试过的是在Linux VM中设置ES。
我在elasticsearch日志中找不到任何内容。在浏览器(Chrome)上,网络中没有日志。它只是旋转,等待服务器,并与“ERR_EMPTY_RESPONSE”对齐。
任何做过这件事的人都能解决一些问题吗?
更新: 以下是我在netstat中可以看到的内容:
TCP 127.0.0.1:9200 machine-name:0 LISTENING
TCP 127.0.0.1:9300 machine-name:0 LISTENING
答案 0 :(得分:21)
从ES 2.0开始,弹性搜索过程仅binds to localhost,这解释了为什么您可以从内部而不是从外部查询ES。
您需要在elasticsearch.yml
配置文件中更改以下设置:
network.host: 0.0.0.0
答案 1 :(得分:3)
我有同样的情况。在日志中查看
tail -f /var/log/elasticsearch/NODE.log
我看到了:
[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
解决方案:
使用以下命令修改不一致的种子行中的档案/ etc/elasticsearch/elasticsearch.yml
:
discovery.seed_hosts: ["127.0.0.1", "[::1]"]
完成。
答案 2 :(得分:1)
我建议将network.host设置为特殊值
例如
network.host: [_local_, _site_]
这适合我。
答案 3 :(得分:1)
请注意,对我来说,只有在设定
后才能取得成功http.host: 0.0.0.0
而不是
http.host: "localhost"
答案 4 :(得分:0)
在Windows Server 2012上为我解决的问题,其中Elasticsearch 7.1.1在C:\ ProgramData \ Elastic \ Elasticsearch \ config \ elasticsearch.yml中添加以下配置:
http.host: 0.0.0.0