15

我正在尝试为我的项目使用 AWS Managed ElasticSearch。

我已关注https://aws.amazon.com/blogs/aws/new-amazon-elasticsearch-service/并且我能够启动一个实例并且这是成功的。但是我无法使用弹性搜索传输客户端从我的服务连接到同一个实例。

我知道传输客户端应该连接到 9300 端口,而我无法通过 aws 控制台打开该端口。

这是我用来连接的代码,它能够成功地连接到我在 ec2 机器上的 9300 端口上的弹性搜索设置。

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:配置的节点都不可用:[] at org.elasticsearch.client.transport.TransportClientNodesService.ensureNodesAreAvailable(TransportClientNodesService.java:305) at org.elasticsearch.client.transport.TransportClientNodesService。在 org.elasticsearch.client.support.AbstractClient.index(AbstractClient.java:98) 处执行 (TransportClientNodesService.java:200) 在 org.elasticsearch.client.transport.support.InternalTransportClient.execute(InternalTransportClient.java:106)

我怀疑这个错误是因为我通过 HTTP 端口连接 TransportClient。但我不知道,AWS 管理的弹性搜索实例的 TCP 端口是什么。我在aws文档中搜索,我找不到任何东西。如果有人使用 TransportClient 与 Amazon ES 连接,请告诉我。

注意:我已经验证了我使用的 elasticsearch java jar 版本与服务器相同。从我的系统中,我可以毫无问题地访问 Kibana 和 ES HTTP 端口。

4

2 回答 2

18

AWS 相关论坛链接

以下是 AWS ElasticSearch 服务的限制:

TCP 传输 该服务支持端口 80 上的 HTTP,但不支持 TCP 传输。

于 2015-11-12T06:15:51.327 回答
1

有关缺少对 AWS Elasticsearch 5.x 域的 TCP 传输的支持的文档部分可以在此处找到:

TCP 传输

该服务支持端口 80 上的 HTTP,但不支持 TCP 传输。

于 2017-10-31T07:52:24.690 回答