org.elasticsearch.client.transport.NoNodeAvailableException: None of the configured nodes are available: []
13,925
Solution 1
9200 is the port for connecting via HTTP, which is why it works from your browser. If you check you the top of your stack trace, you can see in your case that you're connecting via the Transport client (i.e. TCP) so you need to use the port 9300 instead. Try this:
val uri = ElasticsearchClientUri("elasticsearch://192.168.99.100:9300")
val client = ElasticClient.remote(uri)
Solution 2
Make sure client version is same as ElasticSearch server.
Author by
daydreamer
Hello Viewer, Some of the places to see my work are BonsaiiLabs My Website
Updated on July 20, 2022Comments
-
daydreamer almost 2 years
I am running
ElasticSearch
onDocker
which is available locally as$ curl http://192.168.99.100:9200/?pretty { "status" : 200, "name" : "Collector", "cluster_name" : "elasticsearch", "version" : { "number" : "1.4.4", "build_hash" : "c88f77ffc81301dfa9dfd81ca2232f09588bd512", "build_timestamp" : "2015-02-19T13:05:36Z", "build_snapshot" : false, "lucene_version" : "4.10.3" }, "tagline" : "You Know, for Search" }
I am using Elastic4s, for connecting to
ElasticSearch
, I tried following approach, but all of them gave me error asval client = ElasticClient.remote(host = "192.168.99.100", port = 9200)
and
val settings = ImmutableSettings.settingsBuilder().put("cluster.name", "elasticsearch").build() val uri = ElasticsearchClientUri("elasticsearch://192.168.99.100:9200") val client = ElasticClient.remote(uri)
The error is
Exception in thread "main" org.elasticsearch.client.transport.NoNodeAvailableException: None of the configured nodes are available: [] at org.elasticsearch.client.transport.TransportClientNodesService.ensureNodesAreAvailable(TransportClientNodesService.java:305) at org.elasticsearch.client.transport.TransportClientNodesService.execute(TransportClientNodesService.java:200) at org.elasticsearch.client.transport.support.InternalTransportClient.execute(InternalTransportClient.java:106) at org.elasticsearch.client.support.AbstractClient.index(AbstractClient.java:102) at org.elasticsearch.client.transport.TransportClient.index(TransportClient.java:340) at com.sksamuel.elastic4s.IndexDsl$IndexDefinitionExecutable$$anonfun$apply$1.apply(IndexDsl.scala:23) at com.sksamuel.elastic4s.IndexDsl$IndexDefinitionExecutable$$anonfun$apply$1.apply(IndexDsl.scala:23) at com.sksamuel.elastic4s.Executable$class.injectFuture(Executable.scala:21) at com.sksamuel.elastic4s.IndexDsl$IndexDefinitionExecutable$.injectFuture(IndexDsl.scala:20) at com.sksamuel.elastic4s.IndexDsl$IndexDefinitionExecutable$.apply(IndexDsl.scala:23) at com.sksamuel.elastic4s.IndexDsl$IndexDefinitionExecutable$.apply(IndexDsl.scala:20) at com.sksamuel.elastic4s.ElasticClient.execute(ElasticClient.scala:28) at com.enterpriseconnector.persistence.Elastic$.insert(Elastic.scala:17) at com.enterpriseconnector.persistence.Test$$anonfun$1.apply(Elastic.scala:27) at com.enterpriseconnector.persistence.Test$$anonfun$1.apply(Elastic.scala:24) at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:245) at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:245) at scala.collection.immutable.Range.foreach(Range.scala:166) at scala.collection.TraversableLike$class.map(TraversableLike.scala:245) at scala.collection.AbstractTraversable.map(Traversable.scala:104) at com.enterpriseconnector.persistence.Test$.delayedEndpoint$com$enterpriseconnector$persistence$Test$1(Elastic.scala:24) at com.enterpriseconnector.persistence.Test$delayedInit$body.apply(Elastic.scala:23) at scala.Function0$class.apply$mcV$sp(Function0.scala:34) at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12) at scala.App$$anonfun$main$1.apply(App.scala:76) at scala.App$$anonfun$main$1.apply(App.scala:76) at scala.collection.immutable.List.foreach(List.scala:381) at scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:35) at scala.App$class.main(App.scala:76) at com.enterpriseconnector.persistence.Test$.main(Elastic.scala:23) at com.enterpriseconnector.persistence.Test.main(Elastic.scala) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
My complete code is
import java.util.Calendar import com.sksamuel.elastic4s.{ElasticsearchClientUri, ElasticClient} import com.sksamuel.elastic4s.ElasticDsl._ import com.sksamuel.elastic4s.source.StringDocumentSource import org.elasticsearch.common.settings.ImmutableSettings object Elastic { println("Creating Elastic Connection") val settings = ImmutableSettings.settingsBuilder().put("cluster.name", "elasticsearch").build() val uri = ElasticsearchClientUri("elasticsearch://192.168.99.100:9200") val client = ElasticClient.remote(uri) def insert(monitorJson: String) = { client execute { index into "test" -> "elastic4s" doc StringDocumentSource(monitorJson) } } } object Test extends App { for (_ <- 1 to 100) yield { val json: String = s"{time: ${Calendar.getInstance().getTime()}}" println(s"inserting ${json}") Elastic.insert(json) } }
-
Nathaniel Waisbrot over 8 yearsWhere are you running the elastic4s code?
-