Elasticsearchって?

Elasticsearchは、分散型でオープンソースの検索・分析エンジンです。テキスト、数値、地理空間情報を含むあらゆる種類のデータに、そして構造化データと非構造化データの双方に対応しています。Apache Luceneをベースに開発されたElasticsearchは、2010年にElasticsearch N.V.(Elasticの前身となる企業)がはじめてリリースしました。シンプルなREST APIや分散設計、スピードとスケールの優位性で広く浸透したElasticsearchは、現在もElastic Stackの中核となるプロダクトです。Elastic Stackはデータ投入からエンリッチメント、保管、分析、可視化までを実現するオープンソースツール群です。Elasticsearch、Logstash、Kibanaの頭文字をとった"ELK Stack"の愛称でも知られています。Elasticsearchにデータを送る軽量なシッピングエージェント、Beatsも加わったことでElastic Stackになりました。

Elasticsearchって、何に使うの?

Elasticsearchは高速でスケーラブル、しかも多様なコンテンツをインデックスすることができ、幅広いユースケースにお使いいただけます。

  • アプリ検索
  • Webサイト検索
  • エンタープライズサーチ
  • ロギングとログ分析
  • インフラメトリックとコンテナー監視
  • アプリケーションパフォーマンス監視(APM)
  • 地理空間データ分析と可視化
  • セキュリティ分析
  • ビジネス分析

Elasticsearchが動作する仕組み

ログやシステムメトリック、Webアプリケーションなど、さまざまなソースの生データがElasticsearchに入ってきます。このような生データをElasticsearchにインデックスする前に、パースして正規化し、エンリッチするプロセスをデータ投入といいます。Elasticsearchにインデックスされたデータには、高度なクエリを実行したり、アグリゲーションを使用して複雑なデータのサマリーを取得することができます。さらにKibanaを使ってデータをパワフルに可視化したり、ダッシュボードを共有できるほか、Elastic Stack全体の管理を行うこともできます。

Elasticsearchインデックスとは?

Elasticsearchインデックスとは、相互に関連付けられたドキュメントの集合です。Elasticsearchは各種データをJSONドキュメントとして格納します。各ドキュメントは一連のキー(フィールド名やプロパティ)と、それに対応する値(文字列、数値、ブール値、日付、数値アレイ、地理情報、ないしその他の種類のデータ)を関連付けます。

Elasticsearchは、超高速の全文検索を実現する目的で開発された倒置インデックスと呼ばれるデータ構造を使用します。倒置インデックスは、あらゆるドキュメントに出現する一意の単語をすべてリスト化することで、その単語が存在するドキュメントをすべて特定します。

Elasticsearchはインデックスのプロセスを通じてドキュメントを格納し、倒置インデックスを構築して、ドキュメントのデータをほぼリアルタイムに検索できるようにします。インデックスは、インデックスAPIによって開始されます。インデックスAPIを使って特定のインデックスにJSONドキュメントを追加したり、アップデートをしたりできます。

Logstashは何に使うの?

Elastic Stackのコアプロダクトの1つであるLogstashは、各種データを集計し、処理してElasticsearchに送ります。Logstashはオープンソースの、サーバーサイドデータ処理パイプラインです。複数のソースから同時にデータを取り込み、エンリッチ、変換してElasticsearchに送信できるようにします。

Kibanaは何に使うの?

Kibanaは、Elasticsearchのデータを可視化したり、管理を行うツールです。ヒストグラムや線グラフ、円グラフ、マップなどをリアルタイムに作成できます。Kibanaは、Canvasをはじめとする高度な各種のアプリも搭載しています。たとえばCanvasはデータから動的なカスタムインフォグラフィックを作成するアプリ、Elasticマップは地理空間データを可視化するアプリです。

Elasticsearchを使う理由

Elasticsearchは高速です。 Luceneをベースに開発されているElasticsearchは、全文検索に優れた性能を発揮します。Elasticsearchは、ほぼリアルタイムの検索プラットフォームにもなります。つまり、ドキュメントがインデックスされて、検索可能になるまでのレイテンシーが非常に短時間。通常は1秒程度です。したがって、セキュリティ分析やインフラ監視など、タイムセンシティブなユースケースに最適です。

Elasticsearchは分散設計です。 Elasticsearchでは、ドキュメントがシャードと呼ばれるコンテナーに分散して格納されます。ハードウェアの障害に、シャードは複製したコピーによる冗長化で対応します。Elasticsearchは設計レベルで分散化されていることで、何百、何千という代数のサーバーにスケールアウトさせることができ、ペタバイト規模のデータを扱うことができます。

Elasticsearchには、幅広い機能が内蔵されています。 スピードとスケーラビリティ、回復性といったメリットに加えて、Elasticsearchにはデータロールアップやインデックスライフサイクル管理など、格納や検索をより効率的に実施するための多数の機能が内蔵されています。

Elastic Stackでデータ投入、可視化、レポート作成をシンプル化できます。 BeatsやLogstashを併用して、Elasticsearchにインデックスする前段階のデータ処理を手軽に行うことができます。KibanaはElasticsearchデータをリアルタイムに可視化するだけでなく、アプリパフォーマンス監視(APM)やログ、インフラメトリックデータにすばやくアクセスするためのUIとしても使用できます。

Elasticsearchについてよくあるご質問

Elasticsearchは無料ですか?

はい。Apache 2ライセンスに基づくElasticsearchのオープンソース機能部分を無料でお使いいただけます。さらに、Elasticライセンスに基づく無償機能部分も無料でお使いいただくことができます。有償のサブスクリプションをご購入いただくことにより、AlertingやMachine Learningをいった高度な機能をお使いいただけます。

Elasticsearchのオフィシャル配布とは?

Elasticsearchのオフィシャル配布パッケージは、Elastic Webサイトからご利用いただけます。

Elasticsearchにコントリビューションできる人は誰ですか?

Elasticsearchは、Elasticが管理するオープンソースプロジェクトです。コードベースには、Elasticの社内開発者と、社外の開発者の双方からのコントリビューションが含まれます。

プルリクエストは、Elasticsearch GitHubレポジトリから誰でも送信することができます。Elasticではあらゆるプルリクエストについて、コードベースに統合する前に透明性確保のためのレビューを実施しています。

Elasticsearchをデプロイする場合、どんな選択肢がありますか?

Elasticsearchは、Elasticsearch Service(Amazon Web Services/AWS、Google Cloud Platform/GCP、Alibaba Cloudで提供中)を利用してマネージドでデプロイすることも、お使いのハードウェアやクラウドにダウンロード&インストールしてデプロイすることもできます。Elasticsearchのドキュメントで、Elasticsearchのダウンロード、インストール、設定の手順を説明しています。

パブリッククラウドのプラットフォームを使わずにプロビジョニングや管理、デプロイの監視を1つのコンソールで実施したいという場合、Elastic Cloud Enterpriseまたはプライベートサブスクリプションのご利用をお勧めしています。Elastic Cloud Enterpriseは、パブリッククラウドだけでなくプライベートクラウド、仮想環境、オンプレミスハードウェアにデプロイしてお使いいただけるサービスです。

Elasticsearchがサポートするプログラミング言語は?

Elasticsearchは以下の通り、幅広い言語をサポートし、またオフィシャルクライアントを提供しています。

  • Java
  • JavaScript(Node.js)
  • Go
  • .NET(C#)
  • PHP
  • Perl
  • Python
  • Ruby

Elasticsearchがサポートする自然言語は?

Elasticsearchはアラビア語やタイ語など、34の自然言語をサポートし、またアナライザーを提供しています。サポートされる自然言語の完全なリストは、Elasticsearch言語アナライザーに関するドキュメントをご覧ください。その他の言語と、カスタムプラグインのサポートを追加することもできます。

ElasticsearchはREST APIを提供していますか?

はい。Elasticsearchはクラスターヘルスの確認やCRUD(作成、読み取り、アップデート、削除)の実行、インデックスに対する検索操作、フィルタリングやアグリゲーションといった高度な操作を実行する包括的でパワフルな各種REST APIを提供しています。