ElasticSearch Java Transport Client NoNodeAvailableException on Ubuntu 14.04
<p>I am running <strong>Elasticsearch v. 2.3.2</strong>, using Java 7.  Following is the printout from <code>curl http://172.31.11.83:9200</code>:</p>

<pre><code>{
  "name" : "ip-172-31-11-83",
  "cluster_name" : "elasticsearch",
  "version" : {
      "number" : "2.3.2",
      "build_hash" : "b9e4a6acad4008027e4038f6abed7f7dba346f94",
      "build_timestamp" : "2016-04-21T16:03:47Z",
      "build_snapshot" : false,
      "lucene_version" : "5.5.0"
    },
  "tagline" : "You Know, for Search"
}
</code></pre>

<p>... and I am using the following in my Java code:</p>

<pre><code>&lt;dependency&gt;
    &lt;groupId&gt;org.elasticsearch&lt;/groupId&gt;
    &lt;artifactId&gt;elasticsearch&lt;/artifactId&gt;
    &lt;version&gt;2.3.2&lt;/version&gt;
&lt;/dependency&gt;
</code></pre>

<p><strong>I have ports 9200 and 9300 open in my firewall rules</strong> for my ES server, and can successfully execute said Java code from my laptop (Mac OSX).  Following is the code snippet that starts off the process (this works fine):</p>

<pre><code>Settings settings = Settings.settingsBuilder()
                .put("cluster.name", "elasticsearch").build();
        esClient =TransportClient.builder().settings(settings).build().addTransportAddress(new 
                InetSocketTransportAddress(new InetSocketAddress(InetAddress.getByName("172.31.11.83"), 9300)));
</code></pre>

<p>Then later, I try to issue an index request (this fails when I run the code on <strong>Ubuntu 14.04</strong>:</p>

<pre><code>adminClient = esClient.admin().indices();
IndicesExistsResponse response = adminClient.exists(request).actionGet();
</code></pre>

<p>My <strong>elasticsearch.yml</strong> file contains the following network settings:</p>

<pre><code>network.bind_host: 0
network.publish_host: 172.31.11.83
transport.tcp.port: 9300
http.port: 9200
</code></pre>

<p>I have also tried with <code>network.bind_host: 172.31.11.83</code> to no avail.  Using <code>curl</code>, I can get to port 9200 from all  machines.  <strong>The cluster name reported by curl is "elasticsearch"</strong>.  </p>

<p>When I start ES, I see the following in the <strong>elasticsearch.log</strong>:</p>

<pre><code>publish_address {172.31.11.83:9300}, bound_addresses {[::]:9300}
</code></pre>

<p>And yet, the exception I get is as follows:</p>

<pre><code>NoNodeAvailableException[None of the configured nodes are available: [{#transport#-1}{172.31.11.83}{172.31.11.83:9300}]]
at org.elasticsearch.client.transport.TransportClientNodesService.ensureNodesAreAvailable(TransportClientNodesService.java:290)
at org.elasticsearch.client.transport.TransportClientNodesService.execute(TransportClientNodesService.java:207)
at org.elasticsearch.client.transport.support.TransportProxyClient.execute(TransportProxyClient.java:55)
at org.elasticsearch.client.transport.TransportClient.doExecute(TransportClient.java:283)
at org.elasticsearch.client.support.AbstractClient.execute(AbstractClient.java:347)
at org.elasticsearch.client.support.AbstractClient.execute(AbstractClient.java:336)
at org.elasticsearch.client.support.AbstractClient$IndicesAdmin.execute(AbstractClient.java:1178)
at org.elasticsearch.client.support.AbstractClient$IndicesAdmin.exists(AbstractClient.java:1198)
</code></pre>

<p>Again, this exact code works from my local machine. Any thoughts?</p>