Elasticsearch とは?

Elasticsearch

Elasticsearch最新情報

NRIのOpenStandiaが提供するElasticsearch最新情報

Elasticsearchの保守サポートサービスの内容はこちら Elasticsearchの導入については、こちらのフォームからお問い合わせ下さい OSS全般の事例紹介はこちら

Elasticsearchバージョンアップ情報

■2022-04-26
[VerUP]Elasticsearch 8.1.3(リリース日:2022/04/21)
■2022-04-12
[VerUP]Elasticsearch 8.1.2(リリース日:2022/04/01)
■2022-03-29
[VerUP]Elasticsearch 8.1.1(リリース日:2022/03/23)
■2022-03-29
[VerUP]Elasticsearch 8.1.0(リリース日:2022/03/09)
■2022-03-08
[VerUP]Elasticsearch 8.0.1(リリース日:2022/03/02)
■2022-02-25
[VerUP]Elasticsearch 8.0.0(リリース日:2022/02/11)
■2022-02-10
[VerUP]Elasticsearch 7.17.0(リリース日:2022/02/02)
■2022-01-25
[VerUP]Elasticsearch 7.16.3(リリース日:2022/01/14)
■2021-12-28
[VerUP]Elasticsearch 7.16.2(リリース日:2021/12/20)
■2021-12-21
[VerUP]Elasticsearch 7.16.1(リリース日:2021/12/14)

すべてを見る

更新日:2022-03-24

Elasticsearchの概要

ElasticsearchはElastic社が開発するオープンソースの分散型全文検索エンジンです。Elasticsearchの元となるソフトウェアは「Compass」という名前で2004年にShay Banon氏によって開発されました。
その後、スケーラブルな検索ソリューションへの対応のため、クラスタリング機能やAPIなど多くの機能が改良、追加され2010年にElasticsearchとして初めてのバージョンがリリースされました。
現在は、Shay Banon氏らが設立したElastic社が引き続き開発をおこなっています。 ElasticsearchはJavaで記述された検索ライブラリ「Lucene」をベースに作られており、同様にLuceneをベースに作られたSolrとともにオープンソースの全文検索エンジンとして高い人気を誇っています。(*1)

 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の公式リリースが発表されました。このように機能追加やサービス展開も継続して行われている他、活用事例なども豊富でコミュニティが活性化していることから、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

TOPに戻る

Elasticsearchの主な特徴

スキーマレスであること

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

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

Elasticsearchのもう1つの特徴である、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" : [ {
           "templeate_double" : {
             "mapping" : {
               "type" : "double"
             },
             "match" : "dstat-*",
             "match_mapping_type" : "string"
           }
         } ]
       },
      :
      :

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

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 Pluginsと、それ以外のCommunity contributedの二つに大別することができます。前述のElastic Stackの有償オプションはCore Pluginsに分類されます。
プラグインの種別としては言語解析用途やElasticsearchそのものの管理用途など様々なものが存在します。日本語の形態素解析器としては、kuromoji(*7)というプラグインがElasticsearchのCore Pluginとして提供されています。
また、elasticsearch-head(*8)やelasticsearch-HQ(*9)など、Community製のプラグインも充実しています。こういったプラグインは形態素解析や、フィルタのカスタマイズなど、要件に併せて自作することも可能(*10)です。
(*7) Japanese (kuromoji) Analysis plugin
https://www.elastic.co/guide/en/elasticsearch/plugins/current/analysis-kuromoji.html
(*8) mobz/elasticsearch-head: A web front end for an elastic search cluster
https://github.com/mobz/elasticsearch-head
(*9) ElasticHQ/elasticsearch-HQ: Simplified Monitoring and Management for ElasticSearch clusters
https://github.com/ElasticHQ/elasticsearch-HQ
(*10) https://www.elastic.co/guide/en/elasticsearch/plugins/current/plugin-authors.html

TOPに戻る

Elasticsearchの主な機能

公式サイトによるとElasticsearchの主な機能は、以下となります。
公式サイトのURLは下記になります。
https://www.elastic.co/jp/elasticsearch/features

カテゴリ 機能 概要
管理と運用 スケーラビリティと回復性 クラスタリングと高可用性
ノードの自動復旧
自動のデータ再バランス化
分散型スケーラビリティ
rack認識
クラスター横断レプリケーション
データセンター横断レプリケーション
セキュリティ Elasticsearchを安全に設定する
通信の暗号化
保存データの暗号化
ロールベースのアクセス制御(RBAC)
属性ベースのアクセス制御(ABAC)
フィールドとドキュメントレベルのセキュリティ
監査ログ
IPフィルター
セキュリティレルム
シングルサインオン(SSO)
サードパーティセキュリティの統合
クライアント 各種プログラミング言語に対応
Elasticsearch DSL
Elasticsearch SQL
Event Query Language(EQL)
JDBCクライアント
ODBCクライアント
Elasticsearch向けTableauコネクター
CLIツール
インテグレーション Elasticsearch-Hadoop
Apache Hive
Apache Pig
Apache Spark
Apache Storm
ビジネスインテリジェンス(BI)
プラグインと統合機能
インジェストとエンリッチ 管理 スナップショットからのリカバリ
インデックスライフサイクル管理
データティア
Frozenインデックス
スナップショットライフサイクル管理
スナップショットと復元
検索可能スナップショット
ソースのみのスナップショット
データのロールアップ
データストリーム
変換
アップグレードアシスタントAPI
APIキーの管理
アラート 高可用でスケーラブルな通知
Eメール、Webフック、IBM Resilient、Jira、Microsoft Teams、PagerDuty、ServiceNow、Slack経由の通知
REST API ドキュメントAPI
サーチAPI
アグリゲーションAPI
インジェストAPI
管理API
デプロイ ダウンロードとインストール
Elastic Cloud
Elastic Cloud Enterprise
Elastic Cloud on Kubernetes
Helmチャート
Dockerコンテナー化
インジェスト クライアントとAPI
インジェストノード
Beats
Logstash
コミュニティのシッパー
データエンリッチメント Elastic Common Schema
各種プロセッサー
各種アナライザー
各種トークナイザー
フィルター
言語アナライザー
動的マッピング
一致エンリッチプロセッサー
地理空間一致エンリッチプロセッサー
データストレージ フレキシビリティ データタイプ
全文検索(転置インデックス)
ドキュメント格納(非構造化データ)
時系列/分析(列での格納)
地理空間(BKDツリー)
セキュリティ フィールドとドキュメントレベルのAPIセキュリティ
保存データの暗号化
管理 クラスター化インデックス
データスナップショットと復元
ソースのみのデータスナップショット
ロールアップインデックス
検索と分析 全文検索 倒置インデックス
ランタイムフィールド
クラスター横断検索
関連性スコアリング
Query DSL
非同期検索
強調表示
自動入力
入力予測
修正(スペルチェック)
パーコレーター
クエリプロファイラー/オプティマイザー
権限ベースの検索結果表示
動的にアップデート可能な同義語
結果のピン留め
分析 アグリゲーション
グラフ探索
機械学習 時系列データの将来予測
時系列データの異常検知
異常の通知
推論
言語の特定

TOPに戻る

Elasticsearchの動作環境

Elasticsearchのバージョン7系からはOpenJDKがバンドルされています。バンドルされているJVMが推奨されるJVMになります。バンドルされたOpenJDKではなく、固有のJDKを利用することも可能ですが、サポートされているLTSバージョンのJDKの利用が推奨されます。既知の問題があるJDKバージョンを使用しようとすると、起動自体が拒否されます。
各OSやブラウザでのElasticsearchの各バージョンの動作実績に関しては下記URLを参照ください。
https://www.elastic.co/support/matrix

TOPに戻る

Elasticsearchのライセンス

Elasticsearchは、Elastic License とServer Side Public License(SSPL)のデュアルライセンスです。7.11以降の配布パッケージはElastic License 2.0の下に提供されます。Elastic License 2.0は、製品とブランドを保護する3つのシンプルな制約の下に、無料の使用、修正、再配布を許諾します。
Elasticsearchのライセンスの詳細については下記をご参照ください
https://www.elastic.co/jp/pricing/faq/licensing

TOPに戻る

Elasticsearchのドキュメント

Elasticsearchの各種ドキュメントは下記URLから参照ください。
https://www.elastic.co/guide/index.html

TOPに戻る

Elasticsearchのダウンロード

各種OSの向けのElasticsearchのパッケージは下記URLに取得方法が記載されています。
https://www.elastic.co/guide/en/elasticsearch/reference/current/install-elasticsearch.html

OpenStandiaに関する
資料請求・お問い合わせはこちら

  • 資料請求
  • お問い合わせ

※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。

  • OpenStandiaサポート対象オープンソース|50種類以上のOSSのサポートをご提供します。
  • 人気midPoint
  • 人気Keycloak
  • 注目MongoDB
  • ForgeRock AM(OpenAM)
  • ForgeRock IDM(OpenIDM)
  • MongoDB
  • Postfix
  • Apache HTTP Server
  • ZABBIX
  • PostgreSQL
  • Apache Struts
  • Apache Kafka
  • Apache Hadoop
  • Apache Spark
  • Spring Framework
  • Apache Tomcat
  • Solr
  • iBATIS
  • DRBD
  • MySQL
  • JBoss
  • Ruby on Rails
  • Jaspersoft
  • OpenLDAP
  • Apache log4j
  • Apache Subversion
  • ForgeRock DS(OpenDJ)
  • Pacemaker
  • Samba
  • Red Hat Enterprise Linux
  • Nginx
  • BIND
  • Dovecot
  • Pentaho
  • sendmail
  • Courier-IMAP
  • ForgeRock DS(OpenDJ)
  • Heartbeat
  • Hibernate
  • Hinemos
  • MyBatis
  • MySQL Cluster
  • Apache Axis2
  • Squid
  • OpenSSO