Elasticsearch を Ruby から使う

スポンサーリンク

Rails アプリケーションで全文検索を行うために、試しはじめた Elasticsearch ですが、ようやく Ruby から使う段階までたどり着きました。下記の記事内容がこれまで行った作業で、今回作業を行う Ruby から使うための前提となります。

ElasticsearchのインストールとCSVからのデータ挿入 | EasyRamble
Elasticsearchのクエリとフィルターで簡単な検索を試す例 | EasyRamble
ElasticsearchにMySQLからデータ挿入、JDBC River Pluginのインストールと使い方 | EasyRamble

【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
画像付き英語辞書 Imagict | 英単語をイメージで暗記
【開発記録】
英単語を画像イメージで暗記できる英語辞書サービスを作って公開しました
スポンサーリンク

Rails アプリで使用するとは言いましても、とりあえず検索機能のみ利用する予定ですので、今回は elasticsearch-ruby のクライアントを利用します。

もう一歩踏み込んで、Elasticsearch のデータを ActiveModel/ActiveRecord のオブジェクトとして扱うために、Rails と Elasticsearch を統合させて使いたい場合は、以下の elasticsearch-rails という gem を利用できます。こちらはいずれ余力がある時に試してみたい。

https://github.com/elasticsearch/elasticsearch-rails

elasticsearch-ruby のインストール

では早速 elasticsearch-ruby をインストールします。

Gemfile

インストール

elasticsearch 起動。

pry で Ruby からの Elasticsearch 検索を試す

ElasticsearchのインストールとCSVからのデータ挿入 | EasyRamble で入れたライブドアグルメの restaurants.csv からインデックスさせた、Elasticsearch の ldgourmet/restaurant を検索の対象として使用します。

まずは、Elasticsearch にアクセスするためのクライアント・インスタンスを生成。

id が 5 の情報を取得。

結果は、Ruby のハッシュで返されます。

name フィールドに’焼肉’が含まれるお店を検索。

新しくデータをインデックスさせる。

確認。

データの update も index メソッドで行える模様。

確認。

削除。

確認。

熊本の焼肉屋さんを検索。

21件見つかりました。

以上ですが、Ruby 用の elasticsearch の gem を試しに使いましたところ、Ruby から Elasticsearch の検索、インデックスへの新規作成、更新、削除が恐ろしいほど簡単に行えます。ActiveModel, ActiveRecord と Elasticsearch を統合させずに、Elasticsearch の index を検索するだけの目的であれば、この elasticsearch-ruby を用いる方法で十分かと思います。

実践で使う場合に備えて、もう少しセキュリティ面のことを調べる予定です。次回は、elasticsearch-ruby 利用時に、外部入力された文字列のエスケープについて記事を書く予定です。

ES_HOME/config/elasticsearch.yml のセッティングに関しても調べないといけない。

Configuration

スポンサーリンク
全文検索システムを実装するには、ElasticSearch がおすすめです。
 
スポンサーリンク

Leave Your Message!