elk系列

这几天在做openapi中的一些数据推送,测试环境已经通过,到压测环境java连接es时候报异常:xception in thread "main" NoNodeAvailableException[None of the configured nodes are available......
搜了一下网上的解决方案.
1、代码配置ip,端口号

2、es集群起了clustername与集群配置不一致

elk系列

Settings esSetting = Settings.builder().put("cluster.name", "sit_elasticsearch_cluster")

配置文件中的cluster.name与settings.builder().put中的保持一致.

3、jar包版本跟服务器不一致
4、还有就是ElasticSearch 5.0x之后 有个xpack插件,装了这东西获取连接方式有所不同

参照官网https://www.elastic.co/guide/en/x-pack/current/java-clients.html

检查发现压测环境装了xpack,添加连接用户名和密码(elastic/changeme)

Settings esSetting = Settings.builder().put("cluster.name", clusterName)
//        .put("xpack.security.transport.ssl.enabled", false)
//                    .put("xpack.security.user", "elastic:changeme")
                    .put("client.transport.sniff", true)// 增加嗅探机制,找到ES集群
    .put("thread_pool.search.size", Integer.parseInt(poolSize))
                    .build();
    client = new PreBuiltTransportClient(esSetting);
  报java.lang.IllegalArgumentException: unknown setting [xpack.security.transport.ssl.enabled] please check that any required plugins are installed, or check the breaking changes documentation for removed settings异常
 由于不认识加了xpack开头的所有参数,这个是因为缺少xpack的lib造成的。

pom.xml加上<dependency>

    <groupId>org.elasticsearch.client</groupId>
    <artifactId>x-pack-transport</artifactId>
    <version>5.6.1</version>
</dependency>

还是不行....

最后发现是xpack证书过期...更新xpack证书,ok解决了...