Google Cloud PlatformでElasticsearchを起動してHerokuから接続する方法
はじめに
今回は自分の運営するamazonの家具を寸法と価格から検索できる「家具サイズ検索」のコスト削減のためにElasticsearchに変更したので備忘録として記事にしておきます。 これまではアドオンのHeroku Bonsai Elasticsearchを利用しており、10万レコードまでで$10かかっておりGCPに移行することにしました。(GCPはf1-microなら月額$4.49以上)
起動方法
今回はGoogle Cloud Platformのこちらのテンプレートを利用します。
ここで好きなセッティングにしてください。 Herokuから接続するのであればサーバの位置をusに設定しておきます。はじめ設定されているasiaは高いのでレスポンス時間がシビアでないならusをオススメします。
自分は$1ほど高くなりますが、検索スピードを担保するために一応SSDに変更に変更しています。 計測した所一応0.3secあるかないかですが検索時間が早くなりました。 また10Gまでストレージ容量も増やすことができたので10万レコードのリミットもなくなりました。
デプロイが完了すると以下の画面でuser名、パスワード、IPを確認します。
あとはRailsでsearchkickを使っているのであれば以下のようにheroku configを設定する。
heroku config:set ELASTICSEARCH_URL='http://[user]:[passwd]@[IP]/elasticsearch/' heroku run rake searchkick:reindex
ちなみにrakeするときが最もCPUを食うみたいで200%つまり2つインスタンスが立ってしまう? なのでbachサイズを小さくするため、app/models/product.rbに以下の設定を足して2インスタンスが立ち上がるの防いでいます。(本当に2インスタンス立ち上がるのかは不明です...)
searchkick batch_size: 100
1ヶ月分(1月1日~1月31日まで)のコスト
参考になるかわかりませんが自分のサービスの1ヶ月運用したコストも公開しておきます。検索数が多くなるとネットワーク料金がかかるはずなので参考程度にしてください。
内容 | 金額(日本円) |
---|---|
Compute Engine Sustained Usage Discount [ Currency conversion: USD to JPY using rate 117.68 ] | -210 |
Compute Engine Micro instance with burstable CPU running in Americas: 743.967 時間 | 700 |
Compute Engine Network Internet Egress from Americas to Americas | 41 |
Compute Engine SSD backed PD Capacity: 10.333 Gibibyte-months | 200 |
合計 | 731 |