我已经使用AWS elasticsearch 服务(不是 EC2)设置了一个弹性搜索服务器。它给了我一个端点https://xxx-xxxxxxxx.us-west-2.es.amazonaws.com/如果我点击这个端点(注意没有指定端口)我可以得到预期的
{
status: 200,
name: "Mastermind",
cluster_name: "xxxx",
version: {
number: "1.5.2",
build_hash: "yyyyyy",
build_timestamp: "2015-04-27T09:21:06Z",
build_snapshot: false,
lucene_version: "4.10.4"
},
tagline: "You Know, for Search"
}
问题是如何在没有端口号的情况下通过 elasticsearch java 客户端获取此信息?我得到的示例代码是
Client client = TransportClient.builder().build()
.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("host1"), 9300));
如果我使用此代码并将“host1”替换为我的端点,我将得到“NoNodeAvailableException”
ps:我使用的java客户端版本是2.0.0。
编辑 我最终决定使用第 3 方 REST 客户端Jest 。但是布鲁克斯在下面回答的内容也非常有帮助——AWS 确实使用端口 80 用于 http,443 用于 https。对我来说,阻止者是我猜的防火墙。
Edit2
AWS ES 服务文档明确指出:
该服务支持端口 80 上的 HTTP,但不支持 TCP 传输。