heroku - 连接到 Elasticsearch Heroku 数据库

标签 heroku elasticsearch

我已经使用 Bonsai elasticsearch 附加组件在 Heroku 上设置了一个入门帐户。我正在尝试通过 Java 应用程序连接到它,但似乎无法通过传输客户端或 Elasticsearch 文档页面上解释的 NodeBuilder 选项进行连接。

我可以运行以下 CURL 来发布数据:

curl -XPOST http://banyan-7086980.us-east-1.bonsai.io/med/test/hello3 -d '{"title":"Hello world2"}'

我目前的思路是这样的:

    Client client = new TransportClient()
            .addTransportAddress(new InetSocketTransportAddress("http://banyan-7086980.us-east-1.bonsai.io", 9300));

但这行不通。我错过了什么?

最佳答案

大多数在 Heroku 上提供托管 Elasticsearch 的服务不支持除 HTTP 之外的任何其他传输方式。从 Java 与 Elasticsearch 交互的规范方式是使用 Transport 客户端或 Node 客户端,您已尝试将这两种客户端连接到 HTTP 端点。

传输和节点客户端使用与 HTTP 不兼容的定制二进制协议(protocol)。

此外,默认情况下,此二进制协议(protocol)不支持您在生产设置中应该期望的一些核心功能:身份验证和加密。

如果您的要求包括在 Heroku 上运行和使用官方 Java 客户端,请查看 Found Elasticsearch on Heroku ,它使用自定义传输模块为传输客户端提供支持:https://github.com/foundit/elasticsearch-transport-module

披露:我是 Found 的开发人员之一

关于heroku - 连接到 Elasticsearch Heroku 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23795778/

相关文章:

java - 在 Heroku 上运行使用 gradle 构建的 Spring 应用程序

php - Heroku PHP 和 Apache dyno 崩溃并出现错误 H10

amazon-web-services - 每个环境单独的 Dockerrun.aws.json

ruby-on-rails - Heroku|Ruby 参数错误 : Missing required arguments:

ruby-on-rails - 为什么 foreman gem 会忽略 PORT 环境变量?

python - 如何使用 gunicorn 在 heroku 上提供 django 静态文件

elasticsearch - 设计处理和搜索 MS Office 文档的 ASP.NET 应用程序

elasticsearch - 如何在Elasticsearch中获得总单词出现次数?

elasticsearch - 在Elasticsearch中增加特定文档中的特定单词

search - elasticsearch ngrams:为什么匹配较短的 token 而不是较长?