よしだのブログ

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

感想戦:aggrigation から見える検索エンジンの次 - 第5回 Elasticsearch勉強会

どうも!昨日は Elasticsearch 勉強会へ参加してきました。 恒例のメモの半リアルタイム更新をしようと思っていたのですが、全編英語のためメモをしている余裕が基本的にありませんでした。理解するのに精一杯で・・、前半についてはある程度取れました。

というわけで、今回はメモ、というよりは感想戦で挑もうかなと思います。

Elasticsearch の Next Vision

Elasticsearch の Next Vision の質問を QA タイムにしたのは私です。。*1

CTO Shay に答えていた内容としては、2点あり、まず、aggrigation の機能的な充実、便利な関数をより追加したり、ある程度精度を下げてもパフォーマンス重視にできるパラメータを追加したりしたいと熱く語っておられました。もう一点は、インデックスデータの安定性を高める、チェックサム機能の追加でした。lucene そのものにチェックサムを、すでにコミットしマージされているとのことで、インデックスの破損が無いことを確認できるようになることで、インデックスの移動などがより安全にできるようにするとのことです。また、万一破損した場合、レプリカやスナップショットなどのバックアップがなければ、現状クロールしなおしだが、これを短くする方法を考えたい、ペタバイトクラスのデータを管理できるようになることも、大事な目標の一つだとおっしゃっていました。

aggrigation 機能について

私がこの中でとても感銘をうけたのは aggrigation 機能の充実についてでした。そのことについて続ける前に、簡単に es の aggrication 機能について説明します。リファレンスは以下。

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-aggregations.html

一言で言うなら、SQL の集約と類似の機能になるかと思います。セミナーの例で出ていたのは、質問掲示板において、python タグがついている投稿を検索し、ヒットした投稿の「平均」コメント数を取得し、さらにトップコメンターと各コメンターの得た「最高」評価を一度のクエリーで得る、というようなものです。すなわち、「平均」「最高*2」といった集計・集約関数を使うことができ、さらに入れ子にすることが可能だということです。こちらもQAで答えて頂いていたのですが、Kibana 4 でフルサポートする予定とのことで、これにより更に柔軟なビジュアライズが可能になると思います。(現状は、ヒットした件数を積み上げたグラフは作れても、ヒットした項目の値を合計して表示するという機能は Kibana 3 にはないようです)

"explorer data" と機械学習

私が、aggrigation 機能についてすごいなと思った理由は explorer data とおっしゃっていた点で、aggrigation により、データを集計する粒度や角度を柔軟に変えることで、まさに”データを探検する”ことができるという点です。もしこれが、十分なパフォーマンスを保ってできるのであれば、かなり衝撃的だと思います。時系列に並ぶデータはとりあえず es + kibana 入れとけば、簡単な集計や分析ぐらいは十分となるかと思います。

また、machine learning 的な機能も付けたいとおっしゃっていたように思います。*3実は、プロプライエタリな検索エンジンでは FAST や Autonom IDOL のように、昔から機械学習的な機能を持っている検索エンジンはありましたが、多くは tf-idf による term vector を元にした類似文書検索やファセット、vector を使ったクラスタリングといったもので絞られたものだったし、正直なところ実用性はあまりありませんでした。es についてはどうなるか、単なる個人的な予想と希望ですが、aggrigation の関数としてつけるのであれば、集計・集約という観点になると思いますので、単にその範囲にはとどまらずより実用的な機能に仕上げてくるのではと思っています。

具体的にどのような機能を作るのかはわかりませんが、個人的には”教師あり”の分類アルゴリズムを搭載すると面白いのではと思いました。例えば Nural Network などのアルゴリズムを組み込んで、自動でタグの推定、タグ付けができるとか面白いのではと思いました。タグが予め設定されている文書は学習データとして扱い、モデルを作成し、タグが付けられていない文書のタグを推定するということは理屈上は可能なんじゃないかと。あるいは、線形回帰で時系列に並べたデータの推移を予測する、というのも面白いかと思います。kibana で可視化されると更にステキなことになりそうな予感です。

なんとなく、そこまでやろうとすると、spark などと外部のツールと連携して、学習や判別用のクラスタを別途用意しないといけないような気がしますが。とにかく、実現してくれそうな気にさせてくれるスペシャルセミナーでした。

最後に、主催の @johtani さん、Elasticsearch 社の皆様、会場・運営のリクルートテクノロジーズの皆様、ありがとうございました!

資料

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

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

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

Mahoutイン・アクション

Mahoutイン・アクション

  • 作者: Sean Owen,Robin Anil,Ted Dunning,Ellen Friedman,伊東直子,真鍋加奈子,堀内孝彦,都元ダイスケ
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2012/10/26
  • メディア: 大型本
  • 購入: 3人 クリック: 26回
  • この商品を含むブログ (10件) を見る

*1:なっていない英語で申し訳ありませんでした。。

*2:最大

*3:聞き間違えでしたらもうしわけありません。。