よしだのブログ

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

勉強会メモ - 第8回elasticsearch勉強会

どうも!今日も勉強会に参加いたしました。

今日の勉強会は、初心者向けから上級者向け、ハイパフォーマンスから自然言語処理を活用したディープダイブまで、とかなり幅広く面白い勉強会でした。個人的に面白かったのは、はてなの事例 B!KUMA は Elasticsearch をバックエンドに作られている、という話や、最近リリースされたトピックのバックエンドに使われているという話です。Elasticsearch って、そんな機能まで持っているのね・・と驚きました。

というわけで、以下メモでございます。

Elasticsearch導入チェックリスト?

Elasticsearch株式会社 Jun Ohtani @johtani 大谷さん

導入、起動後に、次に何をするべきかのチェックリストだそうです。

  • 最新版の es を使う。
  • java も新しい物を使う。(java7も対応しているが、一部のバージョンに lucene のインデックスを壊すバグがあるので注意)

  • OS

    • ファイルディスクリプターを 32000 もしくは 64000 に増やす
    • ヒープを増やす、物理メモリの半分以下(ファイルキャッシュを活かすため)。最大32GBまで。MAXとMINを同じ値にする。
    • メモリのスワップを出来るだけさせない、swapオフ、swappiness、malockall
  • cluster.name

    • デフォルト値は elasticsearch、zendiscovery の機能で隣の人のマシンと勝手にクラスタを組む場合があるので、名前を必ず変える。
  • node.name

    • デフォルト:Marvel のヒーローの名前
    • 例えば、監視していた場合など、再起動後にノード名が変わるので監視できなくなる時がある
  • network.host

    • ネットワークアドレスの指定。複数 nic が刺さっている場合に、バインドしたい ip を指定する
  • discovery.zen.ping

    • Unicast にしましょう。明示的にホスト名を指定する。
    • さもないと勝手にクラスタにノードが追加されることがある。。
  • minimum_master_nodes

    • スプリットプレイン防止
    • 設定する値は (ノード数/2) + 1
    • クラスタは 3 台以上で組むことが推奨
  • その他パス

    • path.log ログディレクトリ
    • path.data データの保存先
    • path.plugins プラグインインストール先
    • バージョンアップ時などに、上書きしたり消したりしないように、elasticsearch 以下以外にする。

質問から補足

  • メモリについて
    • fielddata がメモリを食う。ソートやファセットなど、一度にデータをオンメモリに持つケースが有る。
    • docvalue を使うと、直接ファイルから読めるので最近は推奨している
    • ただし、クエリのパフォーマンスが必要なケースは fielddata のほうがいいケースも有る

Elasticsearch クエリとスキーマ定義のすごい細かい話

株式会社ドワンゴ 藤堂淳也 さん

  • niconico の全サービスを統合する検索基盤へ移行中
  • サービス側からの要件に柔軟に対応できる
    • フィールドの追加ができる
    • スキーマの変更が無停止でできるなど
    • ローリングリスタートで、再起動が必要な場合もサービスを停止せずに反映ができる

ElasticsearchとKibanaで実現する、30億req/dayのリアルタイム分析

株式会社サイバーエージェント 山田直行さん @satully

前回の勉強会の続き!以下、その時のエントリです。

勉強会メモ - 第6回elasticsearch勉強会 - よしだのブログ

  • 広告配信プラットフォームの分析・可視化基盤(Kibana+fluentd)で利用 (DSP)
  • Redshift + Tableau と併用
  • Elasticsearch はリアルタイム特化、Redshift は長期・集計済みのデータ可視化、という用途で使い分け
  • EBS から InstanceStore に変更することで、データノードを半分の数に減らしてコスト削減
  • グラフだけでなく、生ログをテーブルで見ている。生ログが見えるのは評判が良い。
  • 手がかからず安定して動作している
  • リアルタイム用途というふうに役割を絞ることでうまく使えていると思う

はてなのメディア面を支えるElasticsearch

株式会社はてな 山家雄介さん @yanbe

(参考記事:http://bookmark.hatenastaff.com/entry/2014/06/27/180000

  • B!KUMA は Elasticsearch を使って、同じDBの見せ方を変えている
  • 自動カテゴライズ編成機能
    • 恋愛と結婚などうまくカテゴライズして見せている
  • 管理画面で抽出条件を指定している
    • 一般的な検索条件以外にも、R15コンテンツの除外や、機械学習の結果などを使うオプションもある
  • はてなトピックでもりようしている
  • トピックの抽出に Significant Terms Aggregation で実現している (特徴語の抽出)。ネストするとその関連語も取れる

その他 Tips

  • URLをインデックスするときは、tokenize版、非tokeniez版、両方作るとベスト
    • 非tokenize フィールドで prefix query を使い高速に、tokenizeクエリに match フィールドでサブドメイン横断

おまけw

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

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

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