簡體   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