NoNodeAvailableException -- Java API


(Carlos Vega Moreno) #1

After connecting to the elasticsearch cluster through the Java API I get an error. These are the lines that proof I'm able to connect to the node. The IP is correct, I just replaced with xxx. But when I try to create a mapping I get an error. This problem occurs only with the new elasticsearch 2 and the new java api.

2015-11-11 11:04:36.987 Getting ES Client...
Nov 11, 2015 11:04:37 AM org.elasticsearch.plugins.PluginsService
INFO: [Elfqueen] loaded [], sites []
2015-11-11 11:04:36.987 Node: xxx.xxx.xxx.xxx
2015-11-11 11:04:36.987 ES Client obtained

I'm not able to create a new mapping in the cluster because I get this error on the last line of this piece of code:

CreateIndexRequestBuilder createIndexRequestBuilder = client.admin().indices().prepareCreate(indexName);
createIndexRequestBuilder.addMapping(documentName, json);
createIndexRequestBuilder.execute().actionGet();

Exception in thread "Thread-1" 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.client.support.AbstractClient$IndicesAdmin.execute(AbstractClient.java:1177)
at org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:85)
at org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:59)

Is the same code that I used with previous versions of the Java API but I didn't get any errors then. I get the ES client with this code:

private static Client getClient() {  
        Settings settings = Settings.settingsBuilder().build();
        Client client = null;
        TransportClient transportClient = TransportClient.builder().settings(settings).build();

        try {
            client = transportClient.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(Receptor.es_ip), 9300));
        } catch (UnknownHostException e) {
            System.err.println(Util.getTimestampStr() + "UnknownHostException error.");
            e.printStackTrace();
        }

        if(transportClient.connectedNodes() == null){
            System.err.println(Util.getTimestampStr() + "No connected nodes found.");
        }else{
            for(DiscoveryNode d : transportClient.connectedNodes()){
                System.err.println(Util.getTimestampStr() + "DiscoveryNode: " + d.getHostName());
            }
            for(DiscoveryNode d : transportClient.listedNodes()){
                System.err.println(Util.getTimestampStr() + "Node: " + d.getHostName());
            }
        }
    
        return transportClient;
    }

(system) #2