トップ OSS紹介 Elasticsearch

Elasticsearch

サポート対象

NRIのOpenStandiaが提供するElasticsearch詳細情報

Elasticsearch情報

Elasticsearch情報更新日:2025/12/09

Elasticsearchとは

ElasticsearchはElastic社が開発するオープンソースの分散型全文検索エンジンです。Elasticsearchの元となるソフトウェアは「Compass」という名前で2004年にShay Banon氏によって開発されました。

その後、スケーラブルな検索ソリューションへの対応のため、クラスタリング機能やAPIなど多くの機能が改良・追加され、2010年にElasticsearchとして初めてのバージョンがリリースされました。

現在は、Shay Banon氏らが設立したElastic社が引き続き開発をおこなっています。 ElasticsearchはJavaで記述された検索ライブラリ「Apache Lucene」をベースに作られており、同様にApache Luceneをベースに作られたApache Solrとともにオープンソースの全文検索エンジンとして高い人気を誇っています(*1)。Apache Solrとの違いとして、ElasticsearchではJSON形式のQuery DSLを使用することでより柔軟に検索条件を指定することが可能です。またElasticsearchはスケーラビリティと高可用性に優れていることから、ソーシャルネットワークやGitHub、e-bay、Ciscoなど多くの大規模サービスにおいて検索システムの中核となるソフトウェアとして採用されています。
また、近年は全文検索の分野以外でもElastic社が提供するKibana(*2)やLogstash(*3)、Beats(*4)などのプロダクト(Elastic Stack)と連携して大量のログを分析する基盤、あるいはサービスやサーバの監視基盤など、幅広く利用されるようになってきています。こういった用途に対してElastic Stackの有償オプションでは、Elastic Stackでのセキュリティ確保やアラート設定、レポート出力などを簡便且つ効率的に行うプラグイン群を提供しています(*5)。

2017年3月に行われた公式カンファレンスであるElastic{ON}では、クエリのSQL対応や、ElasticsearchとKibanaのクラスタ構築を容易に実現するクラウドサービスであるElastic Cloudの公式リリースが発表されました。また、2025年5月にはElastic社とAWSとの間でAIイノベーションの加速を目的とした5年間の戦略的提携契約が締結されています。このように機能追加やサービス展開も継続して行われている他、活用事例なども豊富でコミュニティが活性化していることから、Elasticsearchは今後さらなる発展が期待されます。

*1 DB-ENGINES :Trend of Search Engines Popularity
https://db-engines.com/en/ranking_trend/search+engine
*2 集積されたデータの視覚化を行なうツール
https://www.elastic.co/jp/products/kibana
*3 データの取り込み、保存場所への送信を行なうツール
https://www.elastic.co/jp/products/logstash
*4 サーバのメトリクスや、ログの内容を取得して送信するツール
https://www.elastic.co/jp/products/beats
*5 データモニタリングや、アラート通知、グラフ等の機能を拡張
https://www.elastic.co/jp/elastic-stack/features

主な機能

Elasticsearchには以下のような機能があります。

  • 全文検索 (Full Text Search)
    論理検索、部分一致、あいまい検索などの高度な検索が高速でできます。
  • 構造化検索 (Structured Search)
    JSON形式のQuery DSLを使用することで複雑な条件(フィルタリング、範囲検索、集約等)の検索が可能です。
  • ほぼリアルタイム検索 (Near Real-Time search)
    ドキュメントを追加するとほぼリアルタイム(Near Real-Time)でインデックスに反映されて検索できるようになります。
  • 集計と分析 (Aggregation & Analytics)
    データの集計(バケット、メトリック、パイプライン)により、グルーピング、統計分析、ヒストグラム作成、再集計、などのさまざまなデータ分析が可能です。
  • RESTful API
    JSON、HTTPベースのAPIが用意されており、多くのプログラミング言語やツールから簡単に操作できます。
  • 複合クエリ(Compound queries)
    複数の全文検索、構造化検索、フィルタを組み合わせることでさらに複雑なクエリを作成することが可能です。
  • 水平スケーラビリティ (Horizontal scalability)
    インデックスをシャードとして複数のノードに分散して配置・処理することで負荷を分散できます。
  • クラスタリングと高可用性(Clustering & high availability)
    複数ノードによるクラスタ環境を構築することでシャードの割り当て(Shard allocation)、レプリケーション(Replication)により、障害耐性や拡張性を確保できます。
  • ドキュメント指向データベース(Document oriented database)
    ドキュメント指向データベースであり、JSONドキュメントの各フィールドのデータの型を判別して保存します。
  • 強力な全文解析機能(Text analysis)
    日本語を含む多言語に対応しており、ステミング、トークナイズ、形態素解析、辞書カスタマイズなどの強力なテキスト解析機能が利用できます。

主な特徴

スキーマフレキシブル

ElasticsearchはJSONデータのインデキシング時に自動的に各フィールドのデータ型を判別してマッピング定義(*6)を自動生成することで、ユーザがスキーマ定義作業をすることなく利用を開始できます。ただし、自動マッピング定義機能は汎用的であるため、すべてのデータに対して適切なマッピング定義が生成されるわけではありません。
そういった場合にはデータをインデキシングする前に特定のフィールドに対してデータ型やアナライズ(どのようにデータを解析するか)の方法を定義することで、ユーザの任意の形でデータをインデキシングすることが可能です。

*6 マッピング定義とはスキーマをElasticsearchのデータとしてどのように保存するか定義したもので、RDBでのテーブル定義に相当する役割を果たします。

JSON over HTTPによるアクセスの一貫性

Elasticsearchでは、すべてがJSONで表現されています。これは、インデキシングされたデータ構造から、マッピング定義にいたります。ElasticsearchのREST APIに対して、マッピング定義を表示するHTTPリクエストを送ると、マッピング定義がJSONドキュメントとして返ってきます。
(例)マッピング定義を表示するためにRESTエンドポイントにリクエスト送る


curl -XGET 'http://localhost:9200/_mapping?pretty'

上記リクエストに対するのレスポンスは次のようなJSONで返されます。

{
"dstat_v2" : {
"mappings" : {
"_default_" : {
"dynamic_templates" : [ {
"template_double" : {
"mapping" : {
"type" : "double"
},
"match" : "dstat-*",
"match_mapping_type" : "string"
}
} ]
},
   :
   :

また、マッピング定義を変更する際にも、ボディ部にJSONで定義を記述したHTTPリクエストをElasticsearchのREST APIに対して送信します。


curl -XPUT http://localhost:9200/_template/dynamic_string -d '{
"template": "serverlog*",
"mappings": {
"_default_": {
"dynamic_templates": [
{
"strings" : {
"match_mapping_type" : "string",
"mapping": {
"type": "string",
"fields": {
"raw": {
"type": "string",
"index" : "not_analyzed",
"ignore_above":256
}
}
}
}
}
],
"properties" : {
"@timestamp" : { "type" : "date", "index" : "not_analyzed" }
}
}
}
],

プラグインが豊富かつ、開発可能であること

Elasticsearchには言語解析やElasticsearchの管理用途など様々なプラグインがあります。
プラグインにはElastic社の社員が開発に携わっている公式プラグイン(Core Plugin)と、コミュニティによって開発されたプラグイン(Community contributed)があります。公式プラグインには前述のElastic Stackの有償オプションの各種プラグインや日本語の形態素解析プラグインの kuromoji(*7)があり、コミュニティ製プラグインにはWebフロントエンドのelasticsearch-head(*8)やCerebro(*9)などがあります。
また、プラグインは要件に合わせて形態素解析やカスタマイズされたフィルタなどを自作することも可能(*10)です。

(*7) Japanese (kuromoji) Analysis plugin
https://www.elastic.co/docs/reference/elasticsearch/plugins/analysis-kuromoji
(*8) mobz/elasticsearch-head: A web front end for an elastic search cluster
https://github.com/mobz/elasticsearch-head
(*9)lmenezes/cerebro: elasticsearch web admin tool
https://github.com/lmenezes/cerebro
(*10)Create Elasticsearch plugins
https://www.elastic.co/docs/extend/elasticsearch

メリット・デメリット

メリット・必要性

  • スケーラビリティと高可用性に優れています。
  • 高いパフォーマンスにより超高速で検索できます。
  • オンプレミス、クラウド、マルチクラウドなどどのような環境でも動作します。
  • 豊富なエコシステムと組み合わせることで柔軟に環境を構築できます。
  • Java、Python、Go などの公式クライアントが提供されており、使い慣れた言語から操作できます。

デメリット・注意点・課題

  • 数多くの機能を理解する必要があるため学習に時間がかかります。
  • 用途によっては多くのメモリやCPU能力が必要になる可能性があります。

ユースケース

Elasticsearch はアプリ検索、Eコマース製品検索、AIを活用した検索、RAG、ログ分析、アプリケーションとインフラの監視、LLMオブザーバビリティ、SIEM、脅威ハンティングとフォレンジック、SOC向けAIなどの用途で利用できます。

動作環境

Elasticsearchのバージョン7系からはOpenJDKがバンドルされています。したがってバンドルされているJVMを使うことが推奨されますが、それ以外のJDKを独自に利用する場合はサポートされているLTSバージョンのJDKを利用することが望ましいとされています。なお、既知の問題があるJDKバージョンを使用しようとすると起動自体が拒否されます。
各OSやブラウザでのElasticsearchの各バージョンの動作実績に関しては下記URLを参照ください。

Elasticsearchのライセンス

Elasticsearchのライセンスはバージョンにより異なります。

  • Elasticsearch 7.10 以前
    Elastic License、Apache 2.0 のデュアルライセンス
  • Elasticsearch 7.11~8.15
    Elastic License 2.0、Server Side Public License(SSPL)のデュアルライセンス
  • Elasticsearch 8.16以降
    Elastic License 2.0、SSPL、AGPL v3 のトリプルライセンス

なお、Elasticsearch 7.11以降のバイナリ配布パッケージはElastic License 2.0のもとに提供されています。Elastic License 2.0は製品とブランドを保護する3つのシンプルな制約のもとに無料での使用、修正、再配布を許諾します。
Elasticsearchのライセンスの詳細については下記をご参照ください。

参考情報

オープンソース年間サポートサービス

OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。

お気軽にお問い合わせください

関連OSS

  • Logstash

    Logstash

    ログスタッシュ。Elastic社により開発された、データ収集ツールです。

  • Kibana

    Kibana

    キバナ。Elasticsearchのデータ可視化や、”Elastic Stack”のプロダクト群(Elasticsearch、Logstash、Kibana、Beats)の制御のために利用されるフロントエンドツールです。

  • Fluentd
    サポート対象

    Fluentd

    フルエントディ。様々なデバイスやシステムからログ収集を行い、NoSQLデータベースやテキストなど様々フォーマットに変換・格納するログコネクタです。

オープンソースに関するさまざまな課題、OpenStandiaがまるごと解決します。
下記コンテンツも
あわせてご確認ください。