Translate

2016/06/13

Elasticsearch をRuby On Railsで。

タイトルのとおり、Elasticsearch をRailsで実装したので、そのまとめ。

やったこと


  1. RakeタスクでcsvなどのファイルからElasticsearchにIndexを作成
  2. 作成したIndexをModelで検索

コア部分のソースコード

https://github.com/Samemura/Elasticsearch-rails-example

解説

だいたいのことは、Githubを見ればわかるので、ここでは検索まわりを中心に紹介する。
今回はAmazon Elasticsearch Service を使ったが、基本はこちらの記事で全てまかなえた。
bool: { term: { 検索対象 => 検索する値 }} 
term を繰り返して、検索対象を追加する。

OR検索

bool: { should: { 検索対象 => 検索する値 }} 
should を繰り返して、検索対象を追加する。

NOT検索

bool: { must_not: {bool: { should: { 検索対象 => 検索する値 }}}
should を繰り返して、検索対象を追加する。

RANGE検索

range: {検索対象: {lte: 値}}
lte は以下。
この時にDateの値の場合は、きちんとフォーマットを定義しないと、範囲チェックできない。
        type: date
        analyzer: standard
        format: yyyy/MM/dd

ページング

{size: 件数},
{from: 開始件数}

ソート

{sort: {ソート対象: desc} }
desc は降順

集計

aggregations: {agg_hits: {terms: { field: 集計対象, size: サイズ } # size = 0 means Integer.MAX_VALUE. https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-terms-aggregation.html#_size
集計結果を取得できる最大件数を指定する。0は無制限。よく使うのはTop10とか。

AWS認証

AWSのIAM認証でアクセスしたい場合は、こちらのGemを使えば簡単にできた。意外と情報は少なかったので、ハマった。

0 件のコメント:

コメントを投稿