赞
踩
记录一个Java调用elasticsearch报错:NoNodeAvailableException[None of the configured nodes are available: [{#transport#-1}{y3Jjg6zOSXODy5N5nKCIrg}{127.0.0.1}{127.0.0.1:9300}]
环境:win10
docker
elasticsearch5.6.12
解决方案:修改elasticsearch配置文件、修改jar包版本、java代码修改端口号
1.修改elasticsearch.yml配置文件
- network.host: 0.0.0.0
- cluster.name: gpjes
2.找到与安装的elasticsearch版本匹配的pom文件
3.修改java代码中cluster.name中与配置文件相对应,端口号改为9300。(9200是HTTP请求访问使用的,不要写错了)
分享下自己遇到的问题:
按照官网的demo,集成到java后,就报这个错。百度、Google搜索了下,总的来说就是这三种解决方式。打开elasticsearch.yml后,里面只有一条配置
http.host: 0.0.0.0
这个地方没看清,只改了cluster.name: gpjes。这里是http.host而不是network.host。然后一直认为这个地方没有问题了,搞了三天,发现当时看错了,添加network.host: 0.0.0.0后程序就能跑了。简直是绝望!!!所以搞一些配置的东西,还需要点耐心。。。
问题定位:
使用docker的朋友,分享一下这几天我定位问题的一些思路,希望对你们有用。
elasticsearch是用java开发的。我们可以通过elasticsearch自身的日志来定位问题。elasticsearch的日志输出配置文件是/usr/share/elasticsearch/config/log4j2.properties。如果要修改日志级别,可以修改该配置文件。
docker启动elasticsearch容器后,使用命令 docker logs -f 89f3d3b4a9c3。89f3d3b4a9c3是elasticsearch容器的CONTAINER ID,使用该命令需要修改。没有使用docker的朋友可以使用tail命令查看日志
1.如果和截图一样
9200端口publish_address {172.17.0.2:9200}, bound_addresses {0.0.0.0:9200}
而9300端口publish_address {127.0.0.1:9300}, bound_addresses {127.0.0.1:9300}
日志是这样输出的,elasticsearch.yml配置文件需要增加network.host: 0.0.0.0配置
2.如果elasticsearch日志类似下图
则说明jar版本不支持。更新成日志建议版本即可。
3.如果日志没有任何输入,java代码中看看cluster.name和端口号是否写正确
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。