elasticsearch 勉強会 第6回
Aggregationあれこれ
- Facetはdeprecated。2.X系でなくなるらしい
- Group by color : Bucket
検索結果のドキュメントを分類 - Count(color) : Metric
Bucket内のドキュメントのデータをもとに計算
ドキュメント数、平均値や最大値など - shard毎にAggsして、最終的にノードがマージする
検索と同じ仕組み、クエリフェーズで実行 - post_filterはAggsの影響を受けない
- filterr aggsはAggsのみに影響して、検索結果には影響しない
- Bucket
- terms Facetの代わり、結果は近似値
shard毎で最初に足切りされている。shard_sizeを使うとチューニングできる - significant terms
異常検知、レコメンドなどに利用? - keydクエリ
結果にkeyをつけて名前がわかりすくできる
- terms Facetの代わり、結果は近似値
- Metric
秒間3万の広告配信ログをElasticsearchでリアルタイム集計してきた戦いの記録
- ディスプレイ広告配信DSP Smalgo
- 広告主 -> DSP -> アドネットワーク/SSP -> ユーザ
- impression / click / conversion それぞれでログを出しており
FluentdでElasticsearchに入れる - mark 行動履歴もログに落とし込んでElasticsearchに入れる
fluentd 10node -> ELB -> | Elasticsearch coordinate Node (write) 2node r3.large kibana -> ELB -> | Elasticsearch Data Node (read) 2node r3.large | Elasticsearch searchNode 28node | 12shard 1replica r3.xlarge / 1GB SSD
- kibanaはエグイクエリを発行するので使いすぎると負荷が上がるw
- 柔軟だがインデックスとドキュメントの設計は大事
- 1日1.5TB (primary & replica)
- データドライブのEBSをSSDに変更して高速化
- 検索処理のキャッシュ化(ElastiCache)
- バージョンアップの話はうちでも使えそう
- indexingのパフォーマンスアップ -> johtaniさんのブログ
Elasticsearch日本語スキーマレス環境構築と、ついでに多言語対応
- dynamic templates & index templates を駆使する
- dynamic templates
- 最初にマッチしたtemplatesが使われる
- index templates
- nodeの再起動は必要なく、新規で作成したインデックスのみに適用される
- _analyzer path langage
-> 多言語対応の部分は後で見たい
elasticsearchソースコード読みはじめてみた
非常に勇気をもらえた。
おらでもソースを読めそうだ!?
- クエリを受けて結果を返す部分から読むのがベター と言われたものたどりつくのも大変!
- ノード起動から導入した時のお話
reroute APIを使用してシャードの配置を制御する (LT)
- 複数シャード移動のはまりどころ
自動再配置に注意!自動再配置を抑止するべし。 - Bonsai is cool !!
- shardの移動でRemoteTransportExceptionが頻発
(shardが多すぎる?)
タグを振って配置することもできる(whereness?)