首页 > 解决方案 > 生产 Heroku(rails 应用程序)上的“未知协议”Bonsai Elasticsearch

问题描述

我已经将一个 rails 5 应用程序部署到 heroku,并且我正在使用 Bonsai Elasticsearch 插件。我已经对其进行了配置,因此它可以从本地主机正确索引和搜索,但在生产中失败

我按照v6.x此处的说明安装了以下 gem :

gem 'bonsai-elasticsearch-rails', '~> 6'
gem 'elasticsearch-model', github: 'elastic/elasticsearch-rails', branch: '6.x'
gem 'elasticsearch-rails', github: 'elastic/elasticsearch-rails', branch: '6.x'

尝试搜索或创建索引时,我仅在 prod 中收到以下错误:

Faraday::SSLError (SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: unknown protocol)

还可能值得注意的是,我正在使用沙盒版本的 Bonsai 和带有自动配置 SSL 的付费 heroku dyno。

标签: ruby-on-railselasticsearchheroku

解决方案


我与 Bonsai 支持人员取得了联系,他们提供了以下信息来解决我的问题:

感谢您伸出援手。问题可能是由于在 Ruby 客户端中引入了 Elastic 的一项重大更改(请参阅此处的讨论)。Elastic 表示他们不打算修复它。

简单的解决方法是将 :443 附加到集群 URL 的末尾。换句话说,是这样的:

https:// : @*.eu-west-1.bonsaisearch.net:443

基本上,他们将默认端口从 443 切换到 9200,这破坏了许多现有的应用程序。


推荐阅读