ちょっと話題の記事

#cmdevio2016 (レポート/ C-2) 「Elasticsearch で、自由自在に検索・分析できるようになるためのヒント」発表しました

2016.02.22

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、木戸です。

2016年2月20日(土) に開催されました Developers.IO 2016 で「Elasticsearch で、自由自在に検索・分析できるようになるためのヒント」と題しまして登壇させていただきました。

入社20日目だったというのにこのような機会をいただけて感謝です!また悪天候の中イベントへお越しいただいたみなさま大変ありがとございました!

Elastic{ON}16 で発表された Elastic Stack の最新情報が気になりつつも、地味に Analyzer など、言語処理について少し詳しく話してきましたので、そのレポートまとめです。

発表資料

発表した資料はこちら↓

概要

Elasticsearch はスキーマレスでドキュメントをインデックスすればすぐに検索できるその導入の敷居の低さも、このプロダクトの魅力の一つですが、いざ検索や分析の制度を向上させようとするとそれなりの知識が必要になってきます。

Elasticsearch はデータベースの一種だと思っている方も多いかと思いますが、実際はデータを保存してそれを参照するだけでなく、言語処理やスコアリングなどアプリケーション的な要素もかなり強いミドルウェアです。そのため、Elasticsearch を使いこなすには、そのアーキテクチャーや提供されている機能、一般的な言語処理方法など、設計するうえで必要な前提知識が比較的多いです。

今回のセッションでは、自由自在に検索や分析ができるようになるためのヒントになればと思い、 アナライザーや言語処理パッターンなど、検索エンジン特有の機能にフォーカスして解説しました。

アンケート結果

これまで Elasticsearch はログ分析で使われる印象が強かったのですが、今回のセッションでアンケートをとった感じだと、3:2 (ログ分析 VS サイト内検索)と、想定していたよりもサイト内検索での使用も増えているなぁ〜という印象でした。

1. よくある悩み

誰もが経験している悩みってこんなのあるよね〜。

2. 検索・分析の仕組み

検索も分析もインデックスをどう作るかが重要!

3. Analysis モジュール

Elasticsearch の言語処理モジュールの仕組みなど解説

4. 公式 Analysis モジュール

意外と多い公式に提供されているAnalysisモジュールの紹介

5. カスタム Analyzer

カスタム Analyzer ってなに?

6. Analysis のコントロール

フィールドごとにAnalyzerが決定されるフローって実は結構複雑

7. 言語処理パターン

これまで、私が経験したプロジェクトでの言語処理をパターンにまとめて紹介

8. マルチ・フィールド

この機能のおかげで、元ドキュメントのスキーマを変更する機会がすごく減ります。

9. APIs

言語処理の検証など、いろんなAPIが提供されているから便利に活用しよう!

さいごに

Elastic{ON}16 では、Ingest Node という新機能が発表されました。これは、今回のセッションで説明させていただいた内容の前処理に当たる機能です。Analyzer はフィールド単位での処理に対して、Ingest Node はドキュメントレベルでのパイプラインプロセッシングとなります。この機能が搭載されることで、これまでよりも柔軟に様々なデータを統合し、データに付加価値を与えられることになるはずです。しかし、その価値あるデータを生かすも殺すも今回のセッションで解説させていただいた Analyzer の設計にかかっています。今回解説させていただいた内容がデータの利活用において、少しでもお役に立てれば幸いです。