[Using ElasticSearch version 2.0]
In etc/hosts file "esnode" is mapped to IP address(some other machine where ES is running) as shown
192.168.2.219 esnode
The Transport Client code is ::
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 client code runs but when executing the below code : this.getClient().prepareGet(indexName, typeName, String.valueOf(id)).get();
The exception is thrown:
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)
I have also tried using IPAddress instead of host name. The above code runs properly if
esnode is mapped to 127.0.0.1
Can somebody help...
Setup elasticsearch host ip address to network.host value in elasticsearch.yml
network.host: es_host_ip
This is solve TransportClient NoNodeAvailableException issue.
Check if your elasticsearch server have also version 2.0, if no, upgrade. Client and server must have the same version to work, I don't know why but this solved my problem.
Cheers,
Other reason could be, your Elasticsearch Java client is a different version from your Elasticsearch server .
Elasticsearch Java client version is nothing but your elasticsearch jar version in your code base.
For example: In my code it's elasticsearch-2.4.0.jar
To verify Elasticsearch server version,
$ /Users/kkolipaka/elasticsearch/bin/elasticsearch -version Version: 5.2.2, Build: f9d9b74/2017-02-24T17:26:45.835Z, JVM: 1.8.0_111
As you can see, I've downloaded latest version of Elastic server 5.2.2 but forgot to update the ES Java API client version 2.4.0 https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/client.html
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.