超簡単に自然言語解析できる!?ElasticSearchを徹底解説

この記事を書いた人
北爪 聖也

株式会社pipon代表取締役。 キャリアはADK(広告代理店)でテレビ広告運用をして残業120時間するが、ネット広告では自分の業務がAIで自動化されていることに驚愕する。そこで、機械学習受託会社に転職し、技術力を身につけた後、piponを創業。現在、製薬業界、大手監査法人、EC業界、様々な業界でAI受託開発事業を運営。

はじめに

今回は、ElasticSearch(エラスティックサーチ)を紹介します。ElasticSearchとはElastic社が提供している、「Lucene」を基盤としたオープンソースの全文検索エンジンです。全文検索エンジンとは、大量のドキュメントから目的の単語を含むドキュメントを、迅速に検索できるソフトウェアです。
今回紹介するElasticSearchは、ビッグデータとの親和性が高いこともあり、近年多くのユーザーから高い評価を得ている検索エンジンで、Facebook、LinkedIn、NETFLIX、GitHubといった、著名な企業でも採用されているソフトウェアです。
今回は、具体的な実装例は他に譲り、ElasticSearchの考え方のみを見ていきます。

ElasticSearchとは

1) ElasticSearchの概要

ElasticSearchは、Elastic社が開発した全文検索エンジンで、Elastic Stackに含まれるソフトウェア群の中心的なソフトウェアです。初版は、2010年にリリースされています。
特に検索の速さや分析の柔軟性に優れているだけでなく、検索方法も理解しやすいので、データの蓄積や分析環境の構築をスムーズにできる点が、重宝されています。
また、ElasticSearchはオープンソースソフトウェアということもあり、リーズナブルな価格で使用することができます。例えば、小規模なプロジェクトに向いている「スタンダード」であれば、月16米ドル程度で使用することができます。

2) ElasticSearchの特徴

ElasticSearchには様々な強みがあるので、それを紹介したいと思います。

①利用者や仕事量の増大に対応する能力が高い

個人用のノートPCで扱える規模のデータから、大規模なシステム(ペタバイト級のデータ量を扱う何百台ものサーバー)が必要となるデータまで、幅広い規模のデータに対応することができます。これは、本ソフトウェアが、数百台のクラスタ構成までも想定した作りになっているからです。仮に、新たにコンピュータを追加しても、既存のデータの分散処理や複製を自動で行ってくれるので、利用開始までの調整に手間があまりかかりません。

②データ構造の柔軟性が非常に高い

データ同士を関連付けるデータマッピングを事前に行わなくてもデータを登録でき、データの型を自動で判別してくれます。そして、データを登録した後に、データ同士を関連付けたり変更したりすることが可能です。

③関連ツールが充実している

ElasticSearchはElastic Stack内のソフトウェアの一つですが、Elastic Stackには他にも優れたツールがあり、ElasticSearchとの連携が可能です。
例えば、KibanaはWebブラウザ上で操作できるソフトウェアで、ElasticSearchのデータを様々なグラフで見える化してくれます。ダッシュボード機能も付いており、ニーズに応じて、様々なカスタマイズが可能です。また、ログ解析も行うことができ、リアルタイムの分析も可能です。
その他にも、Logstashというソフトウェアもあります。Logstashは、複数のデータソースからデータを取り込み、目的に応じて変換して、そのデータを必要とするシステムに格納してくれる、ETLツールのような機能を持っています。格納先はElasticSearch以外にも、SYSLOGなどその他の格納先をサポートしています。

④SQLにも対応している

一般的な関係データベース(RDB)では、SQLが使われていますが、ElasticSearchではRESTfulインターフェースで操作してデータを検索します。よって、RDBに慣れている人には使いにくいかもしれませんが、操作方法は簡単なのですぐに慣れることができます。
どうしてもその操作に慣れない方は、「Elasticsearch SQL」を用いることで、使い慣れたSQLでも容易に素早く全文検索が可能です。

⑤自由自在な検索が可能

ElasticSearchでは、好きなように様々なタイプ(構造化データ、非構造化データ、地理情報など)の検索を行い、それを連結することができます。我々の周りには様々な形態のデータが存在していますので、この自由度の高さは大きな魅力と言えます。

⑥検索速度が非常に速い

検索エンジンの重要な性能である検索速度の速さも、ElasticSearchの売りの一つです。検索結果をすぐに得ることができれば、繰り返しの検索や広範囲の検索を行う余裕が出てきます。
高速検索を実現するために、ElasticSearchでは全文検索用の有限状態トランスデューサ(FST)を用いた転置索引、数値データや地理データを保存するためのBKDツリー(BSPツリーの一種)、列指向の考え方を採用しています。

⑦最適な検索結果を見つけ出す能力が高い

ElasticSearchはあらゆるデータベースを横断的に検索できるので、ユーザーが探し求めるものを柔軟に見つけ出すことができます。
検索頻度やタイミングなど様々な要因に基づき、検索結果を順位付けできますし、検索結果をユーザーにどう示すかを微調整することもできます。
また、ElasticSearchのユーザーは人であることがほとんどですが、ElasticSearchは入力ミスのような、複雑なヒューマンエラーにも対応できる能力を持っているので、精度の高い検索が可能です。

⑧高い復元性を有している

障害に対する頑強性もElasticSearchの強みです。ElasticSearchは、分散環境で安心して使えるように設計されています。例えば、ハードウェアの故障や、ネットワークトラブルなどの障害を検知し、クラスタやデータを保護します。また、クラスタ間複製機能を備えており、補助クラスタがバックアップとして素早く稼働してくれるので、トラブル時にも安心です。

3) ElasticSearchの用途

ElasticSearchは様々な場面で使うことができます。例えば、大規模なロギング、インフラやアプリケーションの状態監視、システム稼働状況の監視、クローリング、文書や地理データの検索、位置情報データの調査、セキュリティ分析など、幅広い用途での活用が可能です。

4. おわりに

今回は、高い全文検索能力を持つElasticSearchを紹介しました。ElasticSearchはビッグデータの時代に適合した、高い能力を持つ全文検索エンジンであるにも関わらず、オープンソースのため、小規模なプロジェクトであれば、手ごろな料金で導入することができます。
レスポンスの高さは魅力的なので、全文検索エンジンの導入を検討されている方は、ElasticSearchを候補の一つとしてみるのは、いかがでしょうか。

5. 参考サイト

ElasticSearch公式ホームページ

はじめての Elasticsearch

全文検索エンジン「Elasticsearch」を調べて使ってみた色々まとめ

オープンソースの検索エンジン/Elasticsearchとは

全文検索エンジン「Elasticsearch」を触ってみた