java - AWS Managed ElasticSearch 上的 Elastic Transport 客户端

标签 java amazon-web-services elasticsearch amazon-elasticsearch

我正在尝试为我的项目使用 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/

相关文章:

java - 找不到 NotSerializedException 的来源

java - java中运算符的定义

java - 使用 Ehcache 扩展 Java Web 应用程序

python-2.7 - 使用 boto3 在没有 GET 或 PUT 的情况下验证 S3 凭据

linux - 如何使用 cloudwatch 以外的脚本获取 AWS RDS CPU 和内存指标

ElasticSearch 模板

java - 如何使用 trie 设计字典应用程序?

java - @JsonIgnore 行为

elasticsearch - 动态模板支持默认类型吗?

elasticsearch - 在ElasticSearch中使用multi_match查询的结果令人好奇