【问题标题】:elastic4s with Amazon Elasticsearch Serviceelastic4s 与 Amazon Elasticsearch Service
【发布时间】:2017-03-02 09:20:35
【问题描述】:

我在我的 scala 项目中使用 elastic4s 与 ElasticSearch 进行通信。为了开发,我启动了一个本地节点,一切正常。对于生产,我想使用 Amazon Elasticsearch Service。我已经配置了该服务并允许通过我的 ec2 实例的 ip 访问它。我可以通过 ssh 进入 ec2 并执行以下操作来验证它是否有效:

curl search-blabla-blabla.us-east-1.es.amazonaws.com/_cluster/health

但是,我无法将 elastic4s 连接到该 ES 实例。我正在尝试:

ElasticClient.remote("search-blabla-blabla.us-east-1.es.amazonaws.com", 9300)

导致:

org.elasticsearch.client.transport.NoNodeAvailableException: None of the configured nodes are available: []

阅读文档,elastic4s 似乎只能通过 TCP [1] 连接,而 Amazon Elasticsearch Service 不支持 TCP[2]:该服务支持端口 80 上的 HTTP,但不支持TCP 传输。

有人可以确认 elastic4s 和 Amazon ES 真的不能一起工作吗?因为那意味着我必须重写我所有的 ES 代码。

【问题讨论】:

    标签: amazon-web-services amazon-ec2 elastic4s


    【解决方案1】:

    Amazon 的 Elasticsearch 服务不支持 TCP,只支持 HTTP 协议。 Elastic4s 仅使用 TCP,Elasticsearch Java API 也是如此(Elastic4s 是 Java 客户端的包装器)。

    如果您想使用 HTTP,则需要手动编写查询并使用常规 HTTP 客户端,或者使用支持 HTTP 协议的 Elasticsearch 客户端。

    更新:

    从 5.2 版开始,elastic4s 支持 HTTP 和 TCP。这目前是实验性的。 https://github.com/sksamuel/elastic4s#quick-start

    【讨论】:

      猜你喜欢
      • 2016-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-13
      • 1970-01-01
      • 2021-06-03
      • 2016-03-11
      • 1970-01-01
      相关资源
      最近更新 更多