よしだのブログ

サブタイトルはありません。

勉強会メモ - 第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

高速スケーラブル検索エンジン ElasticSearch Server

  • 作者: Rafal Kuc,Marek Rogozinski,株式会社リクルートテクノロジーズ,大岩達也,大谷純,兼山元太,水戸祐介,守谷純之介
  • 出版社/メーカー: KADOKAWA/アスキー・メディアワークス
  • 発売日: 2014/03/21
  • メディア: 大型本
  • この商品を含むブログ (2件) を見る