ruby-on-rails - 生产 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。
解决方案
我与 Bonsai 支持人员取得了联系,他们提供了以下信息来解决我的问题:
感谢您伸出援手。问题可能是由于在 Ruby 客户端中引入了 Elastic 的一项重大更改(请参阅此处的讨论)。Elastic 表示他们不打算修复它。
简单的解决方法是将 :443 附加到集群 URL 的末尾。换句话说,是这样的:
https:// : @*.eu-west-1.bonsaisearch.net:443
基本上,他们将默认端口从 443 切换到 9200,这破坏了许多现有的应用程序。
推荐阅读
- javascript - 如何在函数内取消超时
- java - 问:Saxon XQuery 自定义解析器
- linux - 蓝牙突然关闭并且不再活动
- c - 读取文件到链表 C
- javascript - javascript for循环没有为类中的每个按钮打印正确的数据集
- r - 展开数据表,添加新行并按组替换 NA 值
- f# - F#- 如何在 F# 中使用 Assert.Multiple
- python - 当标准偏差大于python中的平均值时,如何绘制带有误差线的条形图?
- sql - 当只有一行满足 WHERE 子句的要求时,是否有返回一组行的 SQL 查询/函数?
- postgresql - 如何使用 UUID 作为 Postgresql 中的外键与休眠