java – org.elasticsearch.client.transport.NoNodeAvailableEx
发布时间:2020-12-15 05:18:17 所属栏目:Java 来源:网络整理
导读:我在Docker上运行ElasticSearch,它在本地可用 $curl http://192.168.99.100:9200/?pretty{ "status" : 200,"name" : "Collector","cluster_name" : "elasticsearch","version" : { "number" : "1.4.4","build_hash" : "c88f77ffc81301dfa9dfd81ca2232f09588b
我在Docker上运行ElasticSearch,它在本地可用
$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" } 我使用Elastic4s,连接到ElasticSearch,我尝试了以下方法,但所有这些都给了我错误 val client = ElasticClient.remote(host = "192.168.99.100",port = 9200) 和 val settings = ImmutableSettings.settingsBuilder().put("cluster.name","elasticsearch").build() val uri = ElasticsearchClientUri("elasticsearch://192.168.99.100:9200") val client = ElasticClient.remote(uri) 错误是 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) 我的完整代码是 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) } } 解决方法
9200是通过HTTP连接的端口,这就是它可以在您的浏览器中运行的原因.如果您检查堆栈跟踪的顶部,您可以在您的情况下看到您通过传输客户端(即TCP)进行连接,因此您需要使用端口9300.试试这个:
val uri = ElasticsearchClientUri("elasticsearch://192.168.99.100:9300") val client = ElasticClient.remote(uri) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |