【问题标题】:Elasticsearch NoNodeAvailableException None of the configured nodes are availableElasticsearch NoNodeAvailableException 配置的节点都不可用
【发布时间】:2016-09-12 17:46:39
【问题描述】:
Settings settings = Settings.settingsBuilder()
                .put("cluster.name", "logging_elasticsearch")
                .build();
        TransportClient client = TransportClient.builder()
                .settings(settings)
                .build()
                .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByAddress(new byte[]{10,100,30,62}), 9300));

  SearchResponse response = client.prepareSearch("logstash-2016.09.08")
            .setTypes("type1", "type2")
            .setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
            .setQuery(QueryBuilders.termQuery("multi", "test"))                 // Query
            .setPostFilter(QueryBuilders.rangeQuery("age").from(12).to(18))     // Filter
            .setFrom(0).setSize(60).setExplain(true)
            .execute()
            .actionGet();

elasticsearch.yml 我在执行搜索查询时收到NoNodeAvailableException

我尝试了这个解决方案: https://stackoverflow.com/a/33875764/2616923 但它没有用。

【问题讨论】:

    标签: java elasticsearch


    【解决方案1】:

    试试这个方法,你的代码好像很接近:

    Settings settings = Settings.settingsBuilder()
            .put("cluster.name", "<elasticsearch-cluster-name>")
            .build();
    
    Client client = new TransportClient.Builder()
                .settings(settings)
                .build()
                .addTransportAddress(new InetSocketTransportAddress(new InetSocketAddress("<elasticsearch-network-host>", <elasticsearch-transport-client-port|default 9300>)));
    

    ==== elasticsearch.yml ====

    cluster.name: <elasticsearch-cluster-name>
    node.name: <elasticsearch-network-host>
    network.host: <elasticsearch-network-host>
    network.bind_host: 0
    

    【讨论】:

      【解决方案2】:

      尝试使用如下节点名称进行设置,

      Settings esSettings = Settings.builder().put("cluster.name", esClusterName)
      .put("node.name",esNodeName)
      

      【讨论】:

        【解决方案3】:
        I have created transport client with more parameters. Below code is perfectly running in production.
        
           Settings settingsBuilder = Settings.builder()
                    .put("cluster.name", DBPropertyUtil.getPropertyByName("es.cluster")).put("client.transport.sniff", true).put("client.transport.ignore_cluster_name", true).build();
        
               Client client = new PreBuiltTransportClient(settingsBuilder)
                    .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(host), port));
        
        Put respective details for host, port, clusterName as per your elasticSearch Servers config.
        

        【讨论】:

          【解决方案4】:

          如果您在全新安装 Java 和 ElasticSearch 的服务器上遇到此错误,请检查是否存在 JAVA_HOME 环境设置,并且它已设置为 JRE 的正确路径。例如:

          JAVA_HOME=C:\Program Files\Java\jre1.8.0_192

          【讨论】:

            猜你喜欢
            • 2017-08-07
            • 1970-01-01
            • 2014-11-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-11-23
            相关资源
            最近更新 更多