AWS Managed ElasticSearch 上的弹性传输客户端

Posted

技术标签:

【中文标题】AWS Managed ElasticSearch 上的弹性传输客户端【英文标题】:Elastic Transport client on AWS Managed ElasticSearch 【发布时间】:2016-01-22 00:59:45 【问题描述】:

我正在尝试将 AWS Managed ElasticSearch 用于我的项目。

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

我知道传输客户端应该连接到 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) 在 org.elasticsearch.client.transport.TransportClientNodesService.execute(TransportClientNodesService.java:200) 在 org.elasticsearch.client.transport.support.InternalTransportClient.execute(InternalTransportClient.java:106) 在 org.elasticsearch.client.support.AbstractClient.index(AbstractClient.java:98)

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

注意:我已经验证了我的 elasticsearch java jar 版本 使用与服务器相同。从我的系统中,我能够 访问 Kibana 和 ES HTTP 端口没有任何问题。

【问题讨论】:

在论坛发现只能使用http客户端连接 此服务未打开任何传输端口 您能在此处添加论坛链接吗?我想使用与您相同的设置。 您可以使用 JEST,它是 REST API github.com/searchbox-io/Jest 的 java 包装器 我在通过 rest api 进行批量读写时遇到了很多问题。很多时候它曾经崩溃过。无论如何,我不认为我可以使用 Jest,我已经想过使用,但不能。 【参考方案1】:

AWS相关论坛link.

Here 是 AWS ElasticSearch 服务的限制:

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

【讨论】:

【参考方案2】:

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

TCP 传输

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

【讨论】:

以上是关于AWS Managed ElasticSearch 上的弹性传输客户端的主要内容,如果未能解决你的问题,请参考以下文章

如何在 AWS Managed Workflows for Apache Airflow 中启用 API?

将 Google 的 SSO 与 AWS Managed Grafana 一起使用并获得:Failed to save the SAML received information

签署 ElasticSearch AWS 调用

无法关闭 AWS 上的 ElasticSearch 索引?

AWS 推出增强的 Elasticsearch 开源发行版; 英国发行纪念霍金的硬币

aws 创建基于vpc的elasticsearch service