第6回Elasticsearch勉強会の資料を読む

Elasticsearch勉強会(Elastic Tokyo User Group) #elasticsearchjp というものがあり、今までに20回以上勉強会が開催されている。

www.meetup.com

Elasticsearch勉強会の資料をまとめてくださっているページがあったので、そこを参考に第1回から順番に資料を読んでいく。

qiita.com

資料を読む目的は

  • 他の方のElasticsearchのまとめ方を知る
  • Elasticsearchの活用事例を知る
  • Elasticsearchを図解的に学ぶ
  • もやもやしてる部分(プライマリシャードや分散システム)を解決したい
  • Elasticsearchに詳しい人を知る

第6回Elasticsearch勉強会

Aggregationあれこれ/@johtani

Aggregationあれこれ // Speaker Deck

感想

  • Aggregationは1.0から利用可能 Facetよりも強力な集計が可能 Facetは2.x系から非推奨
  • Aggregationは大きく2種類 BucketとMetric
  • Bucket…検索結果のドキュメントを指定した条件(バケツ)に分類
  • Metric…Bucket内のドキュメントのデータをもとにいろいろ計算
  • Aggregationの分類処理(Nodeから各シャードに分散させて、その結果をマージ)
  • Aggregationは検索のクエリフェーズで実行
  • post_filterとAggregation
  • terms…インデックス(フィールド)の単語ごとにBucketを生成 結果は近似値
  • significant terms 異常検知、レコメンドなどに利用
  • statsはmin/max/sum/avgおよびcountを返す
  • cardinality
  • percentiles パーセンタイル計算
  • top-hits ハイライト、Named Filter、Query、Source Filtering、Script Field
  • Aggregationの資料の参考先

秒間3万の広告配信ログをElasticSearchでリアルタイム集計してきた戦いの記録/@satully

感想

  • ディスプレイ広告配信システムのインフラ設計に何を使うか 柔軟なスケール・小さく始められスケールアウトが容易・リアルタイムとバッチでの両方の分析ができること→Elasticsearchを採用 Kibanaの存在が採用を後押し
  • クラスタ構成
  • シャード数をいくつにするか
  • staging環境では構成の確認はできてもproduction環境でないと負荷チューニングができない
  • Elasticcache
  • プラグイン head, bigdesk,HQ
  • Fluentd(td-agent)のパラメータをチューニング
  • elasticsearch.ymlの設定値 デフォルトに近いパラメータで運用
  • トラブルとその対応(クラスタの設定を確認・ノードをグレードアップ・ノードを手動で再配置・unassingnedのシャードをノードに割り振るなど)

Elasticsearch 日本語スキーマレス環境構築と、ついでに多言語対応/@9215

https://speakerdeck.com/kunihikokido/elasticsearch-ri-ben-yu-sukimaresuhuan-jing-gou-zhu-to-tuideniduo-yan-yu-dui-ying

感想

  • mapping定義めんどくさい
  • 多言語対応は「デフォルトのアナライザー」を使う
  • 正確に絞り込みたいときは、*.rawフィールド使う
  • 検索漏れを少なくしたい場合は、*.substring使う
  • dynamic templates…フィールド名のパターンや型の種類によってフィールドの定義をルール化する仕組み *index template…インデックス作成時に適用するルールを定義しておける仕組み
  • index templateはconfig/templates配下に保存するだけでOK。ノードの再起動は必要なく、新規で作成したインデックスのみに適用される。
  • インデックス作成→settings要素の適用→タイプの作成→mappings要素の適用→フィールドデータの追加→dynamic templatesの適用
  • Siba | Elasticsearch as a Service | 検索BaaS/ASP | ナレッジワークス株式会社

elasticsearchソースコードを読みはじめてみた/@furandon_pig

elasticsearchソースコードを読みはじめてみた

感想

  • elasticsearchのソースコードを読むにはどこから?→クエリを受けて結果を返す部分から読むのが早道だよ
  • elasticsearchのソースコードは全然みたことないけど、まとめをみると大変そう

reroute APIを使用してシャード配置を制御する/@pisatoshi

感想

  • Cluster Reroute API 利用者が明示的にシャードの割り当てを制御できる。実際問題、使い所が難しい。
  • 自動再配置を抑止するにはtransientのcluster.routing,allocation.enableをnoneにする
  • プラグイン elasticsearch-head
  • Cluster 40nodes,1index
  • Index 110shards,39replicas
  • Bonsai

検索のダウンタイム0でバックアップからIndexをリストアする方法/@kbigwheel

検索のダウンタイム0でバックアップからindexをリストアする方法

感想

  • Snapshot & Restore API は1.0以降Indexのバックアップが無停止で可能になった
  • 今の検索は動作させつつバックグラウンドでリストア作業を行いたい
  • Index Aliasesとリストア時のリネー ムを組み合わせて無停止で復元
  • バージョン1.3.0からaliasなしでのリストアが可能になった