当前位置: 首页 > 面试题库 >

org.elasticsearch.client.transport.NoNodeAvailableException:没有配置的节点可用:[]

倪德业
2023-03-14
问题内容

我正在ElasticSearchDocker它可为本地

$ 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)


 类似资料:
  • 问题内容: 我正在尝试从Java Web Service中的Elastic Search中进行搜索,这是我现在使用的方式: 第一行可以正常工作,但是转到第二行时,将发生以下异常: NoNodeAvailableException [没有已配置的节点可用:[{#transport#-1} {TskPSVeBRR6CvCzP9EVhkQ} {192.168.10.150} {192.168.10.15

  • 问题内容: 过去一个小时刚刚下载并安装了elasticsearch 1.3.2 打开到端口9200和9300:9400的IP表 在/ etc / hosts中设置我的计算机名称和IP 头模块和护理人员已安装且运行平稳 卷曲在本地主机上工作完美 将所有jar从下载中复制到eclipse中,因此版本相同 --Java– -输出- 更新:现在我真的很困惑。我只是按了日食3次。2次收到上述错误。1次搜索成

  • 嗨,朋友们,我正在用开发spring boot项目,我已经在本地机器上安装了弹性搜索,我已经在弹性搜索中安装了插件。我的弹性搜索设置正确,显示绿色标志。项目中的application-dev.yml文件如下: 弹性搜索服务正在我的机器上运行,但当我试图首先保存实体时,我的代码将实体保存在mysql中,然后使用在弹性搜索中,但将实体保存到Elastic中时,它会引发错误: 我也使用了端口而不是,但是

  • 问题内容: 我知道这个问题已经得到解决,但是我已经尽力了,无法解决我的问题。 我刚刚安装了elasticsearch并启动了它。这里的弹性日志: 因此,Elastic已在端口9300上完全运行并正在侦听。 我的群集名称是“我的应用程序”。 由elasticsearch.yml确认: 并且通过请求http:// localhost:9200 /来确认: 这是我的Maven依赖关系(elastic和c

  • 我正在尝试从Java Web服务中的弹性搜索进行搜索,下面是我现在的使用方法: 我在Java程序中做了什么(防火墙、库版本、调用API的方法等)错了吗?我现在的Java版本是1.8.0.121,Elastic Search和Transport Client的版本都是5.2。谢了!

  • 问题内容: 我从计算机访问服务器 得到这个 为什么使用Java API会出错? 编辑 有集群和节点部分的配置 问题答案: 一些建议: 1-使用端口9300。[9300-9400]用于节点到节点通信,[9200-9300]用于HTTP通信。 2-确保您使用的Java API的版本与服务器上运行的elasticsearch的版本匹配。 3-确保集群名称为(检查服务器上的elasticsearch.ym