【发布时间】:2016-02-07 02:04:42
【问题描述】:
我已经使用AWS elasticsearch service(不是 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。对我来说,我猜是防火墙。
编辑2
AWS ES 服务文档明确指出:
该服务支持端口 80 上的 HTTP,但不支持 TCP 传输。
【问题讨论】:
-
如果我的回答满足您的问题,如果您将其标记为正确,我将不胜感激。
-
@Brooks,我仍然无法使用传输客户端连接到 AWS 弹性服务,最后决定使用 Jest。但是您的回答仍然帮助我理解了问题所在。我已经编辑了我的问题,接受了你的回答。如果您找到了完整的解决方案,请编辑您的答案,以便其他人受益。
-
您好 Edmond,您仍然无法连接吗?您的访问政策是否到位?
-
@Brooks,是的,它已经到位。实际上,我将其设置为向公众开放只是为了开发和测试目的。仍然没有工作。但到目前为止,JEST 一直运行良好。
-
我假设您将端口更改为 80?明天我会用我的 ES 实例试一试,看看会发生什么。以前从未使用过 JEST,但听起来很整洁。另外,它看起来提供 SSL?我认为仍然需要有办法解密它。
标签: amazon-web-services elasticsearch elasticsearch-java-api amazon-elasticsearch