Elasticsearchで両方のRailscastのエピソードを見終わったところです。また、Railsアプリケーション(3.1)に実装しましたが、すべてがうまく機能しています。アプリをHerokuにデプロイする方法がわかりませんが、ElasticsearchをHeroku(特に杉のスタック)で動作させる方法がわかりません。
どんな助けでも大歓迎です!
Elasticsearchで両方のRailscastのエピソードを見終わったところです。また、Railsアプリケーション(3.1)に実装しましたが、すべてがうまく機能しています。アプリをHerokuにデプロイする方法がわかりませんが、ElasticsearchをHeroku(特に杉のスタック)で動作させる方法がわかりません。
どんな助けでも大歓迎です!
非常に簡単に [そして自由に ;-)] 独自の ElasticSearch サーバーを Amazon EC2 上に展開し、アプリでそれに接続するだけです。これは私たちが行っていることであり、うまく機能しています...
http://www.elasticsearch.org/tutorials/elasticsearch-on-ec2/
Heroku は、Bonsai アドオンで ElasticSearch をサポートするようになりました。 https://devcenter.heroku.com/articles/bonsai
S3を使用してHerokuでElasticSearchを実行し、状態を永続化するPlayフレームワークモジュールを作成しました。EC2インスタンスは必要ありません。S3データのコストを支払うだけで、はるかに少なくなります。主にIOトランザクションです。ElasticSearch S3ゲートウェイ(永続メカニズム)を使用します。
Playアプリケーションを拡張して検索機能の特定のエンドポイントを作成するか、必要に応じてElasticSearch REST APIに直接アクセスすることで使用できます(デフォルトでは、ルートhttp://yourapp.com/esで公開されます) 。 。それを保護するための非常に基本的な認証システムがあります。
この設定の唯一の欠点は、dynoがスピンアップするのに時間がかかる可能性があることです。したがって、dynoを非アクティブからスピンダウンさせると、うまく機能しません。また、S3データ転送料金が頻繁に発生し、インデックスが巨大な場合は、S3データ転送料金に釘付けになる可能性があります。利点は、自分のデータを管理できることです。警告のもう1つの単語-Herokudynoのメモリ制限内にとどまるように注意する必要があります。とはいえ、全文検索のオートコンプリート機能は、問題なくいくつかのインデックスで機能していました。
JRubyを使用してRailsで同様のモジュールを構築し、ElasticSearchJavaAPIと通信できる場合があります。ここでの私の主な貢献は、別のWebフレームワーク内でそれを実行する方法を理解することでした-PlayもNettyを使用しているため、それを埋め込むのは非常に簡単でした。EC2クラスター+タイヤ(ElasticSearchのRails gem)と比較したパフォーマンステストでは、Heroku/Playアプローチがより高速な検索を実行することが示されました。
プロジェクトはここにあります:https ://github.com/carchrae/elastic-play-私は人々がそれをセットアップするのを手伝ってうれしいです-それはかなり苦痛がないはずです。
それはRailsCastを見たときの私の最初の考えでしたが、残念ながらHerokuでは実行できないJavaデーモンです。
とにかく、通常の Heroku dyno では実行できません。Heroku では保持されないデータをディスクに保存する必要があるためです。アドオンを待つか、別の場所でホストする必要があります。