12

我刚刚在Elasticsearch上观看了 Railscasts 的两集。我还继续在我的 Rails 应用程序(3.1)中实现了它,一切都很好。我想如何将我的应用程序部署到 Heroku,但我不确定如何让 Elasticsearch 在Heroku上工作(特别是在雪松堆栈上)。

任何帮助将不胜感激!

4

5 回答 5

14

您可以非常轻松地 [自由地 ;-)] 在 Amazon EC2 上滚动您自己的 ElasticSearch 服务器,然后通过您的应用程序连接到它。这就是我们正在做的事情,而且效果很好……

http://www.elasticsearch.org/tutorials/elasticsearch-on-ec2/

于 2011-12-22T10:53:12.823 回答
12

Heroku 现在通过 Bonsai 插件支持 ElasticSearch。 https://devcenter.heroku.com/articles/bonsai

于 2012-03-19T05:22:21.503 回答
3

我创建了一个 Play 框架模块,它将使用 S3 在 Heroku 上运行 Elastic Search 以保持状态。不需要 EC2 实例 - 您只需支付更少的 S3 数据成本 - 主要是 IO 事务。它使用 ElasticSearch S3 网关(持久性机制)。

您可以通过扩展 Play 应用程序为您的搜索功能创建特定端点来使用它,或者如果您愿意,您可以直接访问 ElasticSearch REST API(默认情况下它在路由http://yourapp.com/es上公开它) . 有一个非常基本的身份验证系统来保护它。

此设置的唯一缺点是测功机可能需要一些时间才能启动。因此,如果您让测功机因不活动而减速,它将无法正常工作 - 如果这种情况发生很多并且您的索引很大,您可能会因 S3 数据传输费用而被钉死。好处是您可以控制自己的数据,而且价格便宜便宜。另一个警告 - 你需要小心保持在 Heroku dyno 的内存限制内。也就是说,我们有全文搜索自动完成功能在几个索引上工作,没有问题。

您也许可以使用 JRuby 在 Rails 中构建一个类似的模块来与 ElasticSearch Java API 对话。我在这里的主要贡献是弄清楚如何在另一个 Web 框架中运行它——因为 Play 也使用 Netty,所以很容易嵌入它。与 EC2 集群 + Tire(ElasticSearch 的 Rails gem)相比,性能测试表明 Heroku/Play 方法执行更快的搜索。

该项目在这里:https ://github.com/carchrae/elastic-play - 我很乐意帮助人们设置它 - 它应该很轻松。

于 2012-11-05T11:37:01.080 回答
0

当我观看 RailsCast 时,这正是我的第一个想法,但不幸的是,它是一个 java 守护程序,它运行的方式在 Heroku 上是不可能的。

于 2011-12-14T14:24:33.523 回答
0

无论如何,您不能在普通的 Heroku 测功机上运行它,因为它必须将数据保存到不在 Heroku 上持久化的磁盘。您需要等待附加组件或将其托管在其他地方。

于 2011-12-14T22:09:45.590 回答