我正在尝试为我的项目使用 AWS Managed ElasticSearch。
我关注了https://aws.amazon.com/blogs/aws/new-amazon-elasticsearch-service/而且我能够启动一个实例并且它是成功的。但是我无法使用 elasticsearch 传输客户端从我的服务连接到同一个实例。
我知道传输客户端应该连接到 9300 端口,但我无法通过 aws 控制台打开该端口。
这是我用来连接的代码,它能够成功连接到我在 ec2 机器上的 9300 端口上的 Elasticsearch 设置。
ImmutableSettings.Builder settings = ImmutableSettings.settingsBuilder();
settings.put("cluster.name", "my-cluster-name")
.put("client.transport.nodes_sampler_interval", "15s")
.put("client.transport.ping_timeout", "15s")
.put("client.transport.sniff", true)
.put("client.transport.ignore_cluster_name", false).build();
client = new TransportClient(settings)
.addTransportAddress(
new InetSocketTransportAddress(
env.getProperty("elastic-host-url-provided-by-aws",80)
));
我遇到了异常
org.elasticsearch.client.transport.NoNodeAvailableException: None of the configured nodes are available: [] at org.elasticsearch.client.transport.TransportClientNodesService.ensureNodesAreAvailable(TransportClientNodesService.java:305) at org.elasticsearch.client.transport.TransportClientNodesService.execute(TransportClientNodesService.java:200) at org.elasticsearch.client.transport.support.InternalTransportClient.execute(InternalTransportClient.java:106) at org.elasticsearch.client.support.AbstractClient.index(AbstractClient.java:98)
我怀疑这个错误是因为我通过 HTTP 端口连接 TransportClient。但我不知道,aws 管理的 Elasticsearch 实例的 TCP 端口是什么。我在 aws 文档中搜索,但找不到任何内容。如果有人使用 TransportClient 连接 Amazon ES,请告诉我。
NB: I have verified that the elasticsearch java jar version that I am using is as same as same with the server. And from my system I am able to access the Kibana and the ES HTTP PORTS with out any issue.
最佳答案
AWS相关论坛link .
Here是 AWS ElasticSearch 服务的限制:
TCP transport The service supports HTTP on port 80, but does not support TCP transport.
关于java - AWS Managed ElasticSearch 上的 Elastic Transport 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33286270/