mxt_uestc2017 2020-02-19 12:08 采纳率: 0%
浏览 1732

elasticsearch使用时报错NoNodeAvailableException[None of the configured nodes are available:

Exception in thread "main" NoNodeAvailableException[None of the configured nodes are available: [{#transport#-1}{cxp6ccGHTlSKSdhOui5H9w}{localhost}{127.0.0.1:9300}]]
    at org.elasticsearch.client.transport.TransportClientNodesService.ensureNodesAreAvailable(TransportClientNodesService.java:347)
    at org.elasticsearch.client.transport.TransportClientNodesService.execute(TransportClientNodesService.java:245)
    at org.elasticsearch.client.transport.TransportProxyClient.execute(TransportProxyClient.java:59)
    at org.elasticsearch.client.transport.TransportClient.doExecute(TransportClient.java:363)
    at org.elasticsearch.client.support.AbstractClient.execute(AbstractClient.java:408)
    at org.elasticsearch.client.support.AbstractClient.execute(AbstractClient.java:397)
    at org.elasticsearch.client.support.AbstractClient$IndicesAdmin.execute(AbstractClient.java:1250)
    at org.elasticsearch.client.support.AbstractClient$IndicesAdmin.exists(AbstractClient.java:1272)
    at com.mxt.test.test$.storeDataInES(test.scala:219)
    at com.mxt.test.test$.main(test.scala:157)
    at com.mxt.test.test.main(test.scala)

其中代码里的配置信息是

      "es.httpHosts" -> "localhost:9200",
      "es.transportHosts" -> "localhost:9300",
      "es.index" -> "recommender",
      "es.cluster.name" -> "elasticsearch"

elasticsearch.yml配置文件中均为默认未更改

  • 写回答

1条回答 默认 最新

  • 码农阿豪@新空间 新星创作者: 前端开发技术领域 2024-07-25 20:34
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    这个问题是一个NoNodeAvailableException异常,意味着Elasticsearch客户端无法连接到任何可用节点。通常这是由于配置错误或者网络连接问题引起的。 解决这个问题的步骤如下:
    1. 检查Elasticsearch节点是否正常运行:确保Elasticsearch集群中的节点都在运行并且可访问。
    2. 检查网络连接:确保客户端程序能够连接到Elasticsearch节点的指定端口(在这个案例中为9300)。
    3. 检查Elasticsearch客户端配置:确认客户端配置的信息是否正确,包括"es.httpHosts"和"es.transportHosts"等。
    4. 检查Elasticsearch集群配置:检查Elasticsearch集群的配置文件(elasticsearch.yml)中的集群名称是否正确匹配客户端配置中的"es.cluster.name"。 以下是一个简单的Scala代码示例,用于连接到Elasticsearch并执行一些操作:
    import org.elasticsearch.client.transport.TransportClient
    import org.elasticsearch.common.settings.Settings
    import org.elasticsearch.common.transport.TransportAddress
    import org.elasticsearch.transport.client.PreBuiltTransportClient
    import java.net.InetAddress
    object ElasticsearchClientExample {
      def main(args: Array[String]): Unit = {
        val settings = Settings.builder()
          .put("cluster.name", "elasticsearch")
          .put("client.transport.sniff", true)
          .build()
        val client = new PreBuiltTransportClient(settings)
          .addTransportAddress(new TransportAddress(InetAddress.getByName("localhost"), 9300))
        val indexExists = client.admin().indices().prepareExists("recommender").get().isExists()
        println(s"Index 'recommender' exists: $indexExists")
        client.close()
      }
    }
    

    这段代码尝试连接到名为"elasticsearch"的Elasticsearch集群,检查名为"recommender"的索引是否存在,并打印结果。您可以根据需要扩展这个代码,以执行其他与Elasticsearch相关的操作。确保在代码中使用正确的主机和端口,以及正确的集群名称。

    评论

报告相同问题?