楼主在使用Elasticsearch ,java测试是,报错如下:
NoNodeAvailableException[None of the configured nodes are available: [{#transport#-1}{6XeVerfGReC8-hsUOe0iHQ}{hadoop001}{10.20.134.10:9300}]
在网上搜了一下,原因总结如下:
配置文件位置如下:
第一种,配置文件的ip地址没有修改
第二种,使用client连接的端口号应该是9300
第三种,由于配置文件中,修改了集群的名字,而在代码创建连接是,没有指定cluster的名称,
如下,代码没有指定集群名称
private Logger logger = LoggerFactory.getLogger(ElasticsearchTest2.class);
public final static String HOST = "hadoop001";
public final static int PORT = 9300; //http请求的端口是9200,客户端是9300
private TransportClient client = null;
/**
* 9 * 获取客户端连接信息
* 10 * @Title: getConnect
* 11 * @author sunt
* 12 * @date 2017年11月23日
* 13 * @return void
* 14 * @throws UnknownHostException
* 15
*/
@SuppressWarnings({"resource", "unchecked"})
@Before
public void getConnect() throws Exception {
client = new PreBuiltTransportClient(Settings.EMPTY).addTransportAddresses(
new InetSocketTransportAddress(InetAddress.getByName(HOST), PORT));
logger.info("连接信息:" + client.toString());
}
带有集群名称的连接:
注意不同的版本创建setting方式不同:
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>5.5.2</version>
</dependency>
@Test
public void testEs() throws Exception{
// 通过setting对象指定集群配置信息, 配置的集群名
Settings settings = Settings.builder().put("cluster.name", "bigdata") // 设置集群名
// .put("client.transport.sniff", true) // 开启嗅探 , 开启后会一直连接不上, 原因未知
// .put("network.host", "192.168.50.37")
.put("client.transport.ignore_cluster_name", true) // 忽略集群名字验证, 打开后集群名字不对也能连接上
// .put("client.transport.nodes_sampler_interval", 5) //报错,
// .put("client.transport.ping_timeout", 5) // 报错, ping等待时间,
.build();
client = new PreBuiltTransportClient(settings).addTransportAddresses(
new InetSocketTransportAddress(InetAddress.getByName(HOST), PORT));
// 默认5s
// 多久打开连接, 默认5s
System.out.println("success connect");
}
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>2.4.0</version>
</dependency>
Settings settings = ImmutableSettings.settingsBuilder().put("client.transport.ping_timeout", 1000)
.put("discovery.zen.ping.multicast.enabled", "false").put("timeout", 1)
.putArray("discovery.zen.ping.unicast.hosts", "l-flightdev18.f.dev.cn0.qunar.com:9300", "l-flightdev17.f.dev.cn0.qunar.com:9300")
.build();
Node node = NodeBuilder.nodeBuilder().clusterName("flight_fuwu_order_index").client(true).settings(settings).node();
Client client = node.client();