北海道に住みたいと言っているだけのブログ

第12回Elasticsearch勉強会

#elasticsearchjp

IMGP3821.jpg

いま、会社の方でメールサーバーのログを可視化するという業務を行っている。可視化の勉強をすすめるうちに、「これは面白い」と徐々にその魅力に取り憑かれ、いまではプライベートの環境でも可視化して遊んだりしている(最近寝不足なのはこのせい)。

そこで、もう少し知識を深めたいなということで今回全文検索エンジンのElasticsearchに関する勉強会に参加してきた次第である。

会場は丸の内にあるリクルートテクノロジーズさん。方向音痴な私はエレベーターの乗り換えがあったりして迷いながらも、参加者の方に教えていただきながらなんとか41Fの会場に到着。


Elasticsearch 2.0の紹介(elastic社 大谷さん)

Elasticsearch 2.0について

  • Lucene 5ベース
  • RC1版は本番では使わないこと
  • 特徴: Simplification, Security, Resiliency, Features

Simplification

  • 機能の廃止
  • 使われていない機能をプラグイン
  • プラグインだったものを本体に同梱
    • バージョンアップを同時に行え、簡単
  • mappingの変更(重要)
  • QueryDSL
    • Query と Filter の統合

Security

  • Unicast
  • localhostにバインド
    • よちセキュアに
  • ローカル上のクラスター結合は5個まで
  • JavaのSecurity Managerを利用
  • index操作の冗長化
  • 複数data.pathによるストライピング
  • Clusterstateの差分更新
  • Doc.valuesがデフォルトに
    • メモリがパンクしにくくなる
    • 2.x系のindexのみ対象となるため、既存のindexは作りなおす必要あり

Features

  • Pipeline Aggregations
    • 集計した結果を用いてさらに集計できる
  • Index compression
    • インデックスのサイズ減少
    • インデキシングやマージが早く
    • 圧縮選択アルゴリズムが最適化

宣伝

  • 12/16 ユーザーカンファレンス
    • 無料
    • 11/17で登録〆切

QA

  • オライリーの本(英語。700頁以上ある)買ったけど、2.0じゃ使えなくなる?
  • 1.xから2.0への以降方法は?
    • ローリングアップグレードは不可
    • ダウングレードも不可
    • Migration Pluginを活用すべし
      • 1.x系のプラグインとして動作し、Indexの問題点を指摘
      • 問題点を修正することで2.0への以降によるトラブルを減らせる
  • これからElasticsearchを使うときはどちらのバージョンを使うべき?
    • 難しい質問だが、2.0が良いと思う
      • 今後もローリングアップグレードができる
    • ただし人柱覚悟
    • Marvelは現在2.x未対応だが、もう少ししたら出る
  • 1.7系を使っているが、スナップショットを2.0に移行したときに大量のエラーが出た場合、indexは1個ずつ作りなおすべき?
    • そのほうが良い
    • Doc.valuesの恩恵でメモリにも優しくなる
    • 最悪、1.7系を使い続けるのもあり
    • まずはMigrationプラグインでチェック
  • 1.4系を使っているが、1.7系にアップデートする際の注意点を教えてほしい。もしくは2.0にしたほうが良いなどあればあわせて
    • 一度1.7にすべき
      • 2.0に移行できるか否かの情報を1.7で付与できるから
    • できるのであればDoc.valuesなどの理由から2.0で作り直す方が良い
  • Foundは2.0出たらすぐ使えるのか
    • 使えます。準備中。
  • SolrからElasticsearchに移行するためにどう上司を口説けばよいか
    • Solrはイケてない
      • もともとLuceneのラッパーとして便利にしていこう、というコンセプト
      • スケールアウト等が後付け
      • 一方、Elasticsearchはスケールアウト前提で開発
    • 管理がしやすい
    • AWSも担ぎ始めた (https://aws.amazon.com/jp/elasticsearch-service/)
    • 日本にサポートできる人間がいる!

筆者所感

  • 早速2.0RC1入れてみたけど、トラブルなくすんなりと導入できたのでぜひ検証環境に入れてみよう!
  • Pipeline Aggregationの登場が個人的に嬉しい。可視化の幅がさらに広がりそう
  • Kibanaで複雑なVisualizeをしようとするとElasticsearchが悲鳴を上げる時があるので、メモリに優しくなったのも嬉しい。
  • オライリーの本…近々挑戦したい。

Elasticsearchを使った位置情報検索 (クックパッド社 内藤さん)

Holiday

  • 休日の過ごし方を提案するアプリ
  • 最適な目的地を提案

位置情報の絞り込み

  • 二点間の距離で絞り込む
    • geo_distance filter
    • geo_ filters
      • 負荷の大きい処理
      • 極力低コストなフィルタで絞ってから利用
  • 距離順に並べる
    • geo_distanceをソート
      • 単位としてunitを指定
  • より柔軟に検索: 複数条件の考慮

筆者所感

  • 2年目なのに堂々たるスピーチ。見習います
  • Elasticsearchの強力な検索機能の一面を垣間見れた。これまではKibanaに操られてるだけという印象だったから
    • やはり私も体系的にElasticsearchの勉強をしないと。全然使いこなせていないな。。

Elasticsearch at Makuake (サイバーエージェントクラウドファウンディング社 吉田さん)

Makuake

活用事例

  • エラーログ管理 (for エンジニア)
    • Nginx, applicationのエラー
    • 定量的な傾向把握
    • 不具合の早期発見
  • サポーター分析 (for サポーター)
    • サポーター: プロジェクトに出資してくれる人
    • 支援回数×(デバイス or 流入元 or 決済手段...)等、クロス分析しながらMakuakeの強み/弱みをグロース
    • GAと併用
  • 営業成績管理 (for 営業)
    • 担当しているプロジェクトの支援金額をKPI化
    • せっかく営業データがあるから、可視化したい
  • プロジェクト分析 (for 実行者)
    • 実行者: 資金を調達したい側
    • Makuake analytics
      • 自社制作のElasticsearchフロントエンド
      • PV数、サポーター流入元、決済手段等を可視化
      • 製品開発に活かせる

今後の展望

  • 検索基盤
  • レコメ基盤
  • 集計基盤

小ネタ

  • 2825 (ESがランダムに生成するノード名の総数。Marvelキャラがネタ元)
  • 1269 (Marvelの公式サイトに載ってるキャラ数)
  • 両者で一致したのは730件のみ
    • 残りのキャラは謎

筆者所感

  • 分かりやすい構成、すっと頭に入ってきた。スライドの作り方だけでも勉強になった
  • 可視化することで多方面にメリットを与えられる、素敵な例
  • 小ネタは笑った。公式サイトからスクレイピングする以外に、どうやって取り込んだんだろう

補足

次回

  • 通例2ヶ月ごとに行うが、12月はワンデイイベントがあるため行わない
  • 代わりに、Pythonのコミッターが来られるため来月頭に行う

以上、簡単なメモでした。

良いモチベーションアップになった。まずはElasticsearchの知識を増やさねば。

参加できてとても良かった!