やったこと
- RakeタスクでcsvなどのファイルからElasticsearchにIndexを作成
- 作成したIndexをModelで検索
コア部分のソースコード
https://github.com/Samemura/Elasticsearch-rails-example解説
だいたいのことは、Githubを見ればわかるので、ここでは検索まわりを中心に紹介する。
今回はAmazon Elasticsearch Service を使ったが、基本はこちらの記事で全てまかなえた。
Elasticsearch::Model.__elasticsearch__.searchにquesryで指定する。
AND検索
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 件のコメント:
コメントを投稿