我发现这个错误几个小时..我使用的是Play 2.2.0和Elasticsearch 0.90.7!
任何人都可以帮助我吗?
play.api.Application$$anon$1: Execution exception[[NoNodeAvailableException: No node available]]
at play.api.Application$class.handleError(Application.scala:293) ~[play_2.10-2.2.1.jar:2.2.1]
at play.api.DefaultApplication.handleError(Application.scala:399) ~[play_2.10-2.2.1.jar:2.2.1]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$2$$anonfun$applyOrElse$3.apply(PlayDefaultUpstreamHandler.scala:261) ~[play_2.10-2.2.1.jar:2.2.1]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$2$$anonfun$applyOrElse$3.apply(PlayDefaultUpstreamHandler.scala:261) ~[play_2.10-2.2.1.jar:2.2.1]
at scala.Option.map(Option.scala:145) ~[scala-library.jar:na]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$2.applyOrElse(PlayDefaultUpstreamHandler.scala:261) ~[play_2.10-2.2.1.jar:2.2.1]
org.elasticsearch.client.transport.NoNodeAvailableException: No node available
at org.elasticsearch.client.transport.TransportClientNodesService$RetryListener.onFailure(TransportClientNodesService.java:256) ~[elasticsearch-0.90.7.jar:na]
at org.elasticsearch.action.TransportActionNodeProxy$1.handleException(TransportActionNodeProxy.java:89) ~[elasticsearch-0.90.7.jar:na]
at org.elasticsearch.transport.TransportService$Adapter$2$1.run(TransportService.java:316) ~[elasticsearch-0.90.7.jar:na]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) ~[na:1.7.0_25]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) ~[na:1.7.0_25]
at java.lang.Thread.run(Thread.java:724) ~[na:1.7.0_25]
答案 0 :(得分:3)
通常,您获得的错误意味着您的客户端无法连接到elasticsearch节点。
你也可以在这里检查一些其他类似的案例,例如: No Node Available Exception
答案 1 :(得分:1)
你关闭了你的联系吗?可能是您正在向ElasticSearch发送内容,但不会关闭您的连接。最终ES将拥有"没有可用的节点"
try{
Client client //set it up
client.prepareSearch //do something
}
finally {
client.close(); //close it down
}
答案 2 :(得分:1)
在我的情况下,客户端拒绝连接到具有此异常的ES,因为服务器上的群集名称与客户端上指定的不同。 客户端连接到ES,查找所需的群集名称,然后无法说明没有可用的节点。但实际上,这应该意味着没有节点属于在客户端指定名称的集群。
可以通过指定正确的群集名称或将client.transport.ignore_cluster_name
设置为true来解决此问题。
答案 3 :(得分:0)
我建议您尝试ES的这些设置
client.transport.sniff=true
sniffOnConnectionFault=true