Java连接elasticsearch集群 NoNodeAvailableException 解决方法
2017-04-20 17:26
441 查看
以下是java连接elasticsearch集群,新增一个index的客户端代码
解决方法:
1. 端口号不能与HTTP设置的端口号一致!!!!
2. 集权名称如果与elasticsearch.yml 中定义的一致,或者默认的elasticsearh, setting必须为Setting.Empty
下面是改正过的连接方案。
3. 如果不是端口号和集群名称的问题,请检查你的jar包版本是否对应elasticsearch版本
我用的elasticsearch 5.1.1, 对应的Maven jar包依赖
希望这篇文章能帮到你!
package com.yyfq.report.test; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.HashMap; import java.util.Map; import org.elasticsearch.action.index.IndexResponse; import org.elasticsearch.client.Client; import org.elasticsearch.client.transport.TransportClient; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.transport.InetSocketTransportAddress; public class ElasticsearchTest { public static void main(String[] argv) throws UnknownHostException{
//客户端连接elasticsearch代码 Map<String, String> map = new HashMap(); map.put("cluster.name", "elasticsearch"); Settings.Builder settings = Settings.builder().put(map).put("client.transport.ignore_cluster_name", true); Client client = TransportClient.builder().settings(settings).build() .addTransportAddress(new InetSocketTransportAddress( InetAddress.getByName("127.0.0.1"), Integer.parseInt("9200")));
// 新增一个index IndexResponse response = client.prepareIndex("twitter", "tweet") .setId("1") .setSource("{'counter':'2','tags':'Add one more!''}") .execute() .actionGet(); System.out.println("response.version():"+response.getVersion()); //关闭客户端 client.close(); } }执行以上代码时会抛出一个错误:Exception in thread "main" NoNodeAvailableException[None of the configured nodes are available......
解决方法:
1. 端口号不能与HTTP设置的端口号一致!!!!
2. 集权名称如果与elasticsearch.yml 中定义的一致,或者默认的elasticsearh, setting必须为Setting.Empty
下面是改正过的连接方案。
public class ElasticsearchTest { public static void main(String[] argv) throws NumberFormatException, UnknownHostException{ /* //设置新集群名称 Settings settings = Settings.builder() .put("cluster.name", "newCluster") .put("node.name","newNode").build();*/ //创建client TransportClient client = new PreBuiltTransportClient(Settings.EMPTY) .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9300)); //搜索数据 GetResponse response = client.prepareGet("twitter", "tweet", "1").execute().actionGet(); //输出结果 System.out.println(response.getSourceAsString()); //关闭client client.close(); } }
3. 如果不是端口号和集群名称的问题,请检查你的jar包版本是否对应elasticsearch版本
我用的elasticsearch 5.1.1, 对应的Maven jar包依赖
希望这篇文章能帮到你!
相关文章推荐
- Java连接elasticsearch集群 NoNodeAvailableException 解决方法
- spark连接es的问题java.lang.ClassNotFoundException:org.elasticsearch.client.transport.NoNodeAvailableExcep
- spark连接HDFS报错:8020 failed on connection exception: java.net.ConnectException: 拒绝连接 解决方法
- Elasticsearch NoNodeAvailableException 问题解决
- 记录一次Elasticsearch线上部署后出现:org.elasticsearch.client.transport.NoNodeAvailableException: None of the configured nodes are available: []的问题解决
- 用Java连接sqlserver数据库引包后仍出现“java.lang.ClassNotFoundException”错误解决方法
- Elasticsearch报 NoNodeAvailableException 的解决办法
- ES使用org.elasticsearch.client.transport.NoNodeAvailableException: No node available 错误解决方法
- 连接java RMI Server 报java.net.SocketException: Protocol family unavailable错误解决方法
- Oracle Package返回游标和Java调用,ClassCastException的解决方法
- 严重: IOException while loading persisted sessions: java.io.EOFException 解决方法
- Jboss客户端连接EJB,javax.naming.CommunicationException [java.rmi.ConnectException: Connection refused to host: 127.0.0.1]异常解决
- Exception in thread "main" java.lang.NoClassDefFoundError 问题及其解决方法
- tomcat java.io.EOFException解决方法
- java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource的解决方法
- java.io.NotSerializableException错误解决方法
- Java连接MySQL出现乱码解决方法
- sql 与java 连接 的问题 及解决方法
- java.security.AccessControlException: access denied 的解决方法
- Zend Studio for Eclipse的java.lang.NullPointerException错误的解决方法