【发布时间】:2017-03-14 08:07:56
【问题描述】:
[使用 ElasticSearch 2.0 版]
在 etc/hosts 文件中,“esnode”被映射到 IP 地址(运行 ES 的其他机器),如图所示
192.168.2.219 节点
传输客户端代码是 ::
public Client getClient() {
if ((this.client == null)) {
try {
Settings settings = Settings.settingsBuilder()
.put("cluster.name", "myclustername").build();
TransportClient tClient = TransportClient.builder().settings(settings).build();
String[] nodes = "esnode:9300".split(COMMA);
for (String node : nodes) {
String[] hostPort = node.split(COLON);
tClient.addTransportAddress(new InetSocketTransportAddress(
InetAddress.getByName(hostPort[0]), Integer.parseInt(hostPort[1])));
}
this.client = tClient;
} catch (Exception e) {
e.printStackTrace();
}
}
return this.client;
}
此客户端代码运行但在执行以下代码时: this.getClient().prepareGet(indexName, typeName, String.valueOf(id)).get();
抛出异常:
NoNodeAvailableException[None of the configured nodes are available: []]
at org.elasticsearch.client.transport.TransportClientNodesService.ensureNodesAreAvailable(TransportClientNodesService.java:280)
at org.elasticsearch.client.transport.TransportClientNodesService.execute(TransportClientNodesService.java:197)
at org.elasticsearch.client.transport.support.TransportProxyClient.execute(TransportProxyClient.java:55)
at org.elasticsearch.client.transport.TransportClient.doExecute(TransportClient.java:272)
at org.elasticsearch.client.support.AbstractClient.execute(AbstractClient.java:347)
at org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:85)
at org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:59)
at org.elasticsearch.action.ActionRequestBuilder.get(ActionRequestBuilder.java:67)
我也尝试过使用 IPAddress 而不是主机名。如果
上面的代码可以正常运行esnode映射到127.0.0.1
有人可以帮忙吗...
【问题讨论】:
-
你读过this answer吗?
标签: java elasticsearch