Ruby on Rails
弾性検索
サーチ…
インストールとテスト
ローカル開発のためにまずやりたいことは、あなたのマシンにElasticSearchをインストールし、それが動作しているかどうかをテストすることです。 Javaをインストールする必要があります。インストールはかなり簡単です:
- Mac OS X:
brew install elasticsearch
- Ubuntu:
sudo apt-get install elasticsearch
次に起動します:
- Mac OS X:
brew services start elasticsearch
- Ubuntu:
sudo service elasticsearch start
それをテストするために、最も簡単な方法はcurl
です。開始には数秒かかることがあるので、最初に応答がない場合は慌てないでください。
curl localhost:9200
応答例:
{
"name" : "Hydro-Man",
"cluster_name" : "elasticsearch_gkbonetti",
"version" : {
"number" : "2.3.5",
"build_hash" : "90f439ff60a3c0f497f91663701e64ccd01edbb4",
"build_timestamp" : "2016-07-27T10:36:52Z",
"build_snapshot" : false,
"lucene_version" : "5.5.0"
},
"tagline" : "You Know, for Search"
}
開発のためのツールの設定
ElasticSearch(ES)を使い始めるときには、データを探索するのに役立つグラフィカルなツールを用意しておくと良いでしょう。 elasticsearch-head
と呼ばれるプラグインはこれだけです。インストールするには、次の手順を実行します。
- どのフォルダESがインストールされているか
ls -l $(which elasticsearch)
:ls -l $(which elasticsearch)
- このフォルダに
cd
して、プラグインのインストールバイナリを実行します:elasticsearch/bin/plugin -install mobz/elasticsearch-head
- ブラウザで
http://localhost:9200/_plugin/head/
を開きhttp://localhost:9200/_plugin/head/
すべてが期待どおりに機能していれば、あなたは自分のデータを探索できる素敵なGUIを見ているはずです。
前書き
ElasticSearchには文書化されたJSON APIがありますが、おそらくあなたのためにそれを扱ういくつかのライブラリを使用したいと思うでしょう:
Elasticsearch
- HTTP APIの公式低レベルラッパーElasticsearch-rails
- ActiveRecordまたはRepositoryパターンのいずれかを使用してRailsモデルとElasticSearchを接続するのに役立つ、高度なRails統合Chewy
- 非常に普及しており、間違いなくより良い文書を持っている
接続をテストするための最初のオプションを使用しましょう:
gem install elasticsearch
その後、ルビー端末を起動して試してみてください:
require 'elasticsearch'
client = Elasticsearch::Client.new log: true
# by default it connects to http://localhost:9200
client.transport.reload_connections!
client.cluster.health
client.search q: 'test'
Searchkick
すぐにelasticsearchをセットアップしたい場合は、searchkick gemを使用することができます:
gem 'searchkick'
検索したいモデルにsearchkickを追加してください。
class Product < ActiveRecord::Base searchkick end
検索インデックスにデータを追加します。
Product.reindex
クエリを実行するには、以下を使用します。
products = Product.search "apples" products.each do |product| puts product.name end
かなり速い、elasticsearchの知識は必要とされません;-)
詳細はこちら: https : //github.com/ankane/searchkick