よくある質問・用語集

  • もっと調べる
  • どうやって使う?

Elasticsearchとは

Elasticsearchとは、大容量データを処理することを想定した全文検索エンジンである。Elasticsearch、Kibana、Beats、Logstashなどのプロダクトで構成される検索プラットフォーム「Elastic Stack」の中で、心臓部ともいえるデータの検索を行う機能を担当している。Elasticsearchの読み方は「エラスティックサーチ」である。Elasticsearchは、JSONフォーマットでデータを取り扱い、Java、Python、PHPなどの言語をサポートしている。

Elasticsearchは、元々Elastic社が提供しApache2ライセンスの下で公開されているオープンソースソフトウェアであった。AWS(Amazon Web Services)やGoogle Cloudなどのクラウド環境(Elastic Cloud Service)でも利用が可能であった。

2021 年2月リリースの7.11.0以降、最新のElasticsearchは、Server Side Public License(SSPL)とElastic License 2.0(ELv2)のデュアルライセンスに移行した。これにより、Elasticsearchはオープンソースソフトウェアではなくなった。このライセンス変更の背景には、AWSが提供するAmazon Elasticsearch Serviceの存在があった。このようなビジネスでのサービスの提供を阻止するため、Elasticはライセンスの変更を行った。なお、「Elasticsearch」の商標を巡ってElastic社とAmazon間で起きていた訴訟問題は 2022 年に解決し、現在はElasticsearchの名称を公式に使用できるのは開発者のElastic社のみとなっている。

AWS社は、Elasticsearchを使ったサービスを提供していたため、このサービスを継続させるために、ライセンス変更前のElasticsearchをベースとした、コミュニティ主導の全文検索エンジンの開発を開始した。そこで開発されたものが、OpenSearchである。AWS社は、サービス名をAmazon Elasticsearch ServiceからAmazon OpenSearch Serviceに変更し、OpenSearchを利用したサービスを2021 年より提供している。OpenSearchの詳細については以下の記事を参照のこと。

Elasticsearchの特徴

Elasticsearchを利用すると、大容量のデータから必要なデータを素早く簡単に取り出すことができる。例えば、大量に出力されているDHCPサーバのログからIPアドレスやMACアドレスを抽出し、そこから利用ユーザーを特定するといったことができる。

Elasticsearchは、Fess(ドキュメントやWEBサイトの検索)、Graylog(ログ管理)など、様々なソフトウェアの全文検索エンジンとして採用されている。

Elasticsearchには、以下のような特徴やポイントがある。

全文検索

Elasticsearchは、指定したキーワードに一致するデータを大量のデータから高速に抽出することができる。また、指定したキーワードに関連するデータを効率的に抽出することもできる。この機能は例として、大量の商品リスト全体から特定のキーワードを含む商品だけを検索するような時に利用できる。Elasticsarchは、列指向のデータ管理により、大量の情報の中から必要なデータを高速に検索することができる。さらに、Elasticsearchでは、テキストデータの管理にFST(Finite State Transducers)と呼ばれる自然言語処理の手法を採用しており、入力された文字列のテキストを正規化してインデックスを作成する。これらの特徴により、Elasticsearchは少ないメモリで高速な検索を実現する。また、テキストだけでなく、数値、構造化データ、非構造化データ、地理情報などにも対応する。前方一致やAND検索など様々な条件、多様なクエリでの検索が実行可能である。

分散構成

Elasticsearchは、複数のサーバをひとつのクラスタとして構成することができる。扱うデータはクラスタに所属する各サーバ(シャード)に分散して保存される。インデックス(物理的なファイルに保存されるデータの単位)を分割管理するシャードをレプリケーションすることで、データ冗長化を行うこともできる。

スケーラビリティ

システムを停止することなくサーバを追加してシステムを拡張することができ、大規模なシステムを構成することができる。導入時は最小構成で運用を始め、データ量やアクセス量が増加しリソースが足りない時に規模に合わせてサーバを追加するといった、スケーラブルなシステム拡張が可能となっている。サーバを追加した時、Elasticsearchが持っているデータは各サーバに自動的に再配置される。

ハイアベイラビリティ

クラスタ構成でシステムを構築することで、ハイアベイラビリティなシステムを提供できる。そのため、クラスタを構成するひとつのサーバが停止してしまった時、そのサーバを切り離した状態でサービスを継続することができる。データを取得した後、複数のサーバに配置する設定にしておけば、データが失われることもなく、完全な冗長化システムを構築することができる。

Restful API

データ登録やデータ検索は、Elasticsearchが提供するAPIを通して行う。APIはRestful APIの形式となっている。APIを使用することで、外部システムからのデータの登録、検索、分析を容易に行える。

Elasticsearchの使い方

近年、ビッグデータを扱うことが増えているが、そのデータ配置方法や高速に検索する仕組みが課題となっている。Elasticsearchのユースケースとして、大量データを複数サーバに分散して配置したり、複数のサーバにデータを配置することでデータの冗長化を行っている。また、オンプレミス環境に構築して、アカウント数にとらわれず、高速に全文検索を行うこともできるため、セキュリティ面でも安全で便利にビッグデータを扱うシステムを構築することができるようになる。

Elasticsearchと連携ツール

Elasticsearchにはいくつかのツールを連携することができる。ここでは連携させるツールとして、Kibana、Logstash、Kuromojiを紹介する。

Kibana

Kibanaとは、Elastic社が開発したログデータの可視化ツールである。Elasticsearchと同じく、ソースコードはElasticライセンスまたはSSPLの下で利用できる。KibanaはElastic Stackの中で、クラスターの監視や管理の役目も担う。

Kibanaを利用することで、Elasticsearchに保存されているデータを、時系列や属性に合わて抽出できる。そして、抽出したデータの結果をグラフィカルに表示するという使い方が可能である。Kibanaは、多様なデータソースに対応するダッシュボードを持ち、プレゼンテーションを作成することができる他、リアルタイム解析も可能なため、分析の質を向上させることができる。Kibanaは使い勝手の良い非常に強力なログ解析ツールである。

Logstash

Logstashとは、ログデータだけではなく様々な形式のデータを収集・変換し、任意の場所に保管することができるオープンソースソフトウェアである。Logstashを利用すると、ログファイルに溜まっているデータを解析して、データベースへ格納するなど、用途にあった形にデータを変換・保存することができる。ElasticsearchにLogstashで解析した情報を保存し、Kibanaを使って可視化するという使い方も可能である。

Logstashについてのログインやインストール方法などの詳しい情報は「Logstash調査報告書」に記載されており、確認したい方は無料でダウンロードが可能である。

Kuromoji

Kuromojiは、Elasticsearchで日本語データの解析を行う場合に利用される、オープンソースの日本語形態素解析エンジンである。Kuromojiは、ElasticsearchのベースであるApache Luceneへの日本語のサポートを提供している。Kuromojiは、複合語の分割(分かち書き)、品詞のタグ付け、見出し化、読みの抽出などの処理を行う。

ElasticsearchにKuromojiをインストールすることで、日本語データの全文解析が可能になり操作性が向上する。

Elasticsearchを利用しているOSS

ここでは、Elasticsearchを使って実現されているOSSのアプリケーションについて紹介する。

Fess

Fess画面

Fessのログイン画面

Fessは、OSSの全文検索システムである。Wikiや掲示板など、組織内の様々なWeb上のデータをクロールし、検索することができる。また、ファイルサーバにも対応していて、組織内の文書を効率よく探すことができる。さらに、見つかった情報を種類別にカテゴライズすることもできる。そのため、ファイルサーバに蓄積された膨大なナレッジをスムーズに活用することができるようになる。Microsoft Office文書、PDF、TEXT、HTMLなどのデータ形式に対応している。標準で用意されている検索インタフェースは、Google検索と同様の操作感で、簡単に情報を検索することができる。APIを利用して、独自の検索ページを作ることも可能である。

既存のエンタープライズサーチ製品には、ファイル数や容量によってライセンスコストがかかる場合がある。Fessはオープンソースのため、ライセンスフリーであり、設計、構築、サポートに十分な費用を回すこともできる。またFessは、LDAPやActiveDiretoryを利用した認証やアクセス制限にも対応している。企業や組織のファイルサーバでは、見ることができるフォルダやファイルがユーザ単位、部署単位で決められているケースが多いが、認証サーバとの連携により、企業内でも安心して利用することが可能である。

Graylog

Graylog画面

Graylog利用画面

Graylogは、オープンソースのログ管理ソフトウェアである。様々なログを蓄積し、高速な全文検索を行うことができる。また、ログの内容を自動的に解析し、管理者へ通知を行ったり、ランキングやグラフなどの形式でグラフィカルに表示したりすることができる。大量のログを管理する必要がある場合に利用する。

最近では、セキュリティログの管理に利用されるケースが増えている。その他にログを蓄積して可視化できるので、大量のデバイスを扱うIoTを利用している業界でも活用されている。Graylogは、高機能なソフトウェアではあるが、ElasticsearchやMongoDBなどのソフトウェアと連携するため、構築が難しいという問題点がある。また、構築後もチューニングが必須で、専門性や技術が要求される。Graylog4.3より、Elasticsearch7.11以降のバージョンはサポートされないため、Graylog4.3以降は、OpenSearchの利用を推奨している。

デージーネットの取り組み

デージーネットでは、Elasticsearchがバージョン7.11.0以降、オープンソースソフトウェアでなくなったことから、Elasticsearchをフォークして作成されたOpenSearchの調査検証を行った。Elasticsearchを利用しているFessやGraylogなどのオープンソースソフトウェアが、OpenSearchで利用できるかの検証も行っている。また、OpenSearchを利用した全文検索エンジンシステムなどのソリューションを用いたサーバの構築および保守サービスを行っている。

【カテゴリ】:ビッグデータ  情報共有  オープンソースソフトウェア  

  • もっと調べる
  • どうやって使う?

【Webセミナー】自社でOSSを採用しよう!今更聞けないOSSの基本セミナー

日程: 11月22日(金)Webセミナー「BigBlueButton」を使用します。
内容: OSSを導入したいけど、どこから手をつければいいかわからない方必見!
ご興味のあるかたはぜひご参加ください。

セミナー申込

関連用語

Elasticsearchに関連するページ(事例など)

Elasticsearchとは先頭へ