繁体   English   中英

如何在Heroku上使用Elasticsearch

[英]How to use Elasticsearch on Heroku

我刚刚在Elasticsearch上观看了两个Railscast的剧集。 我也继续将它实现到我的rails应用程序(3.1)中,一切都运行良好。 我如何将我的应用程序部署到Heroku,但我不确定如何让Elasticsearch在Heroku上运行 (特别是在雪松堆栈上)。

任何帮助将不胜感激!

您可以非常轻松地[和自由地;-)]在Amazon EC2上滚动您自己的ElasticSearch服务器,并使用您的应用程序连接到它。 这就是我们正在做的事情,它运作良好......

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

Heroku现在支持ElasticSearch并添加Bonsai。 https://devcenter.heroku.com/articles/bonsai

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

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

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

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

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

这是我第一次看到RailsCast时的想法,但遗憾的是它是一个java守护进程,它在Heroku上无法运行。

无论如何你不能在普通的Heroku dyno上运行它,因为它必须将数据保存到Heroku上不存在的磁盘上。 您需要等待加载项或将其托管在其他位置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM