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.

Share:
13,925
daydreamer
Author by

daydreamer

Hello Viewer, Some of the places to see my work are BonsaiiLabs My Website

Updated on July 20, 2022

Comments

  • daydreamer
    daydreamer almost 2 years

    I am running ElasticSearch on Docker 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 as

    val 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
      Nathaniel Waisbrot over 8 years
      Where are you running the elastic4s code?