我正在使用Java 7运行 Elasticsearch v.2.3.2 。以下是来自curl http://172.31.11.83:9200
的打印输出:
{
"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"
}
...我在Java代码中使用以下内容:
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>2.3.2</version>
</dependency>
我的防火墙规则中已打开端口9200和9300 ,用于我的ES服务器,并且可以从我的笔记本电脑(Mac OSX)成功执行所述Java代码。以下是从流程开始的代码片段(这很好):
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)));
然后,我尝试发出索引请求(当我在 Ubuntu 14.04 上运行代码时,这会失败:
adminClient = esClient.admin().indices();
IndicesExistsResponse response = adminClient.exists(request).actionGet();
我的 elasticsearch.yml 文件包含以下网络设置:
network.bind_host: 0
network.publish_host: 172.31.11.83
transport.tcp.port: 9300
http.port: 9200
我也试过network.bind_host: 172.31.11.83
无济于事。使用curl
,我可以从所有机器到达端口9200。 curl报告的群集名称是“elasticsearch”。
当我启动ES时,我在 elasticsearch.log 中看到以下内容:
publish_address {172.31.11.83:9300}, bound_addresses {[::]:9300}
然而,我得到的例外情况如下:
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)
同样,这个确切的代码可以在我的本地机器上运行。有什么想法吗?
答案 0 :(得分:0)
有相同的问题..
在同一个AWS工具包上升级弹性从1.7到2.3.2
Ubunto 14.0.4
9300上的弹性绑定传输
安全组已打开端口(未更改)
现在远程客户端无法通过传输层连接 - 与上面相同的错误。
我的设置中唯一改变的是Elasticsearch的版本
答案 1 :(得分:0)
好的,我解决了这个问题。看来2.3.2没有默认的TCP绑定方式与1.7.0
相同我必须在elasticsearch.yml中设置它:
network.bind_host:{AWS私有IP地址)