勉強会メモ - 第6回elasticsearch勉強会
どうも!久しぶりの勉強会参加です。
今日も大谷さん、スピーカーの皆様、ならびにリクルートテクノロジーズ様、ありがとうございました!
Aggregationあれこれ
Elasticsearch Inc. 大谷さん @johtani
- 1.0から導入、検索結果に対する集計機能。facet よりも強力。facet は 2.x でなくなる予定。
- Aggrecation は大きく二種類、Bucket と Metric。bucket は、検索結果のドキュメントを指定した条件に分類・集計する。Bucket内のドキュメントを計算するのが Metric。
- Bucket に分類後に、Metricで二段階に分類したり、集計したりすることができる。
- Aggs の分散処理、個別のノード(シャード)ごとにアグリゲーションの処理を行い、親ノードでマージして返す。
- 注意:post_filter は、アグリゲーションされる前の検索結果に対して行われる。アグリゲーション後の検索結果にフィルターしたい場合は、aggrigation filter があるのでそちらを利用する。
- 個別のアグリゲーションの紹介
- significant terms は面白そう。ある条件下でだけ、特徴的なデータを抽出できる。experimental。
- field collapsing には、top-hits を利用する。
参考URL : http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-aggregations.html
秒間3万の広告配信ログをElasticSearchでリアルタイム集計してきた戦いの記録
株式会社サイバーエージェント 山田直行さん @satully
- 秒間3万件はオークションのリクエスト件数。flutentd -> Elasticsearch -> Redis / MySQL - 選定時の要件:柔軟なスキーマ、スケールアウトが容易、リアルタイムとバッチで利用可能 - Kibana の存在が大きかった - が、運用では苦労した。 - searchノード 2、dataノード 20ぐらい、Coodinateノード 2 (インデックス作成専用 master:true / data:false) - データモデル、bid request- bid response - winnotice - imp - click - cv、bid request 単位で1インデックス - 教訓 - インデックスとドキュメントの設計は非常に大事 - シャード数をいくつにするか決めるのが難しい (書き込みのパフォーマンスのバランス) - トラブルシュート - バージョンアップで安定した - SSDに変更して高速化 (かなり速くなる) - 検索処理のキャッシュ化
Elasticsearch 日本語スキーマレス環境構築と、ついでに多言語対応
ナレッジワークス株式会社 木戸国彦さん @9215
- マッピング定義はめんどくさいけど、実は色々と考えないといけないのでなんだかんだ設計が必要
- 言語ごとに analyzer を切り分け、languageフィールドの値で分ける
- dynamic template と index template で実現。
- dynamic template : フィールド名でテンプレートを定義
- index template : インデックス名でテンプレートを定義
- index template は config/templates 配下に保存するだけで OK、dynamic template も含めることができる。
- シャードの数や analysis など、dynamic template からあふれるテンプレートの定義ができる。
- 例) language フィールドの値を元にした、analyzer の切り替えなど
- dynamic template はインデックス投入に反映されるので、template を適用しても個別に type を定義しておくと、個別のイレギュラー対応も可能。
elasticsearchソースコードを読みはじめてみた
@furandon_pig さん
- elasticsearch を理解するには動かして理解するのが正解!
LT
reroute APIを使用してシャード配置を制御する
株式会社富士通ソフトウェアテクノロジーズ 滝田聖己さん @pisatoshi
- reroute API - シャードのルーティングをコントロールする API
- allocate - シャードの配置先ノードを指定
- cancel - 配置済みのシャードをキャンセル
- move - 特定のノードにあるシャードを移動
- 空にしようとした場合、自動アロケートされてうまくいかない場合があるので、自動アロケートを無効にする。
- Elastic HQ というプラグインを使うと、配置が見れて幸せになれる。
検索のダウンタイム0でバックアップからIndexをリストアする方法
株式会社ドワンゴモバイル 西田和史さん
- Snapshot & Restore API
- Snapshot は無停止でできるが、Restore は普通無停止ではできないが、どうやってやるか?
- Index Aliases 機能と、リストア時のリネームを組み合わせて無停止で復元する。
- Index aliases、Indexへ別名を与える
- リストア時にリネームを指定する。
関連エントリ
以下、関連エントリ。Dynamic Template 作ってみた件です。今日の発表いただいているほうがかなり進んでいるので、早速参考にバージョンアップしたいです!
Solr 風 Dynamic Mapping Template を作った。(Elasticsearch 1.3.2) - よしだのブログ
参考
バージョンが古いので、公式サイトと付きあわせて見るのは必須ですが、それでもかなり参考になります。
高速スケーラブル検索エンジン ElasticSearch Server
- 作者: Rafal Kuc,Marek Rogozinski,株式会社リクルートテクノロジーズ,大岩達也,大谷純,兼山元太,水戸祐介,守谷純之介
- 出版社/メーカー: KADOKAWA/アスキー・メディアワークス
- 発売日: 2014/03/21
- メディア: 大型本
- この商品を含むブログ (2件) を見る