Elasticsearchの機能
Elasticsearchは分散型のRESTful検索/分析エンジンです。データを一元的に格納し、あらゆる形とサイズのデータを検索、インデックス、分析することができます。
管理と運用
管理と運用
スケーラビリティと回復性
Elasticsearchは、設計段階から分散環境での安全な運用を考慮したプロダクトです。クラスターサイズの変更も思いのまま。ノードを追加するだけです。
クラスタリングと高可用性
クラスターとは、共同ですべてのデータを保有し、全ノードを横断してフェデレーションによるインデキシングと検索を提供する1つ以上のノード(サーバー)の集合です。Elasticsearchのクラスターはプライマリシャードとレプリカシャードの2つを搭載しており、ノードがダウンした場合にフェイルオーバーの役割を果たします。プライマリシャードに問題が生じると、レプリカシャードが代替します。
クラスタリングと高可用性についてさらに詳しくノードの自動復旧
意図的であるかを問わず、何らかの理由で任意のノードがクラスターから切り離される場合、複製とシャードのリバランスを活用して、マスターノードに代替されます。この一連のアクションは、各シャードを可能な限りすみやかに、完全に複製することで、データロスからクラスターを保護することを目的としています。
ノードの割り当てについてさらに詳しく自動のデータリバランス
Elasticsearchクラスターのマスターノードは、どのシャードをどのノードに割り当てるか自動的に判断します。さらにマスターノードは、シャードを別のノードへ移動させ、クラスターの再バランス化を図るタイミングも決定します。
自動のデータ再バランス化についてさらに詳しく分散型スケーラビリティ
Elasticsearchは、ニーズに応じて自在にスケールします。データの増加やユースケースの追加、リソースの不足が生じた場合も、運用クラスターにノードを追加するだけ。キャパシティと信頼性を簡単に引き上げることができます。クラスターにノードを追加すると、自動でレプリカシャードが割り当てられ、有事の際も安心です。
分散型スケーラビリティについてさらに詳しくrack認識
カスタムノード属性を認識属性として使用し、シャードを割り当てる際、Elasticsearchに物理ハードウェアの設定を考慮させることができます。どのノードが同じ物理サーバー(あるいは同じラック、同じゾーン)にあるかをElasticsearch側で把握していれば、プライマリシャードとレプリカシャードを分散させ、障害発生時にすべてのシャードコピーが失われるリスクを最小化することができます。
割り当て認識についてさらに詳しくクラスター横断レプリケーション
クラスター横断レプリケーション(cross-cluster replication、CCR)機能を使って、リモートクラスターのインデックスをローカルクラスターに複製することができます。一般的な運用ユースケースで広く役立ちます。
CCRについてさらに詳しく災害復旧:プライマリクラスターに障害が発生した場合、2番目のクラスターがホットバックアップとして振る舞います。
地理的近接性:ローカルな読み取りで、ネットワークレイテンシーを低減します。
データセンター横断レプリケーション
Elasticsearchを使用するミッションクリティカルな多くのアプリに欠かせない要件に、データセンター横断レプリケーションがあります。従来は、部分的かつ付加的なテクノロジーで解決されていました。Elasticsearchのクラスター横断レプリケーションなら、データセンター間や、地理的冗長性を目的に、あるいはElasticsearchクラスター間のデータ複製のためにテクノジーを追加する必要はありません。
データセンター横断レプリケーションについてさらに詳しく管理と運用
管理職
Elasticsearchには豊富な管理ツールとAPIが揃っており、データやユーザー、クラスター、運用などを完全に制御できます。
スナップショットからの復元
クラウドのオブジェクトストレージを使ってElasticsearchクラスターのElasticsearchノードとオブジェクトストレージから特定のデータを転送し、シャードレプリケーションやシャード復元に活用することができるようになりました。Elasticsearchノード間でデータ転送を行う方法に比べて、データ転送量とストレージコストを低く抑えることができます。
スナップショットからの復元についてさらに詳しくインデックスライフサイクル管理
インデックスライフサイクル管理(ILM)によって、ユーザーは4つの各フェーズにインデックスが滞在する期間と、インデックスの各フェーズで実行される一連のアクションのポリシーを定義し、自動化して制御します。データをさまざまなリソースのティアに設置できるため、運用コストのよりきめ細やかな管理を実現します。
ILMについて詳しくはこちらHot:頻繁に更新、クエリが生じるフェーズ
Warm:更新はされないが、クエリが生じるフェーズ
Cold/Frozen:更新はされず、クエリが生じる頻度も乏しいフェーズ(検索は可能だが、遅い)
Delete:保管の必要がないフェーズ
データティア
データティアは、ノードロール属性を使ってデータをHot、Warm、Coldの3つのノードに正式に区分する手法です。ノードロール属性に基づき、ノードのインデックスライフサイクル管理ポリシーも自動的に定義されます。Hot、Warm、Coldの3つのノードロールを割り当てることで、高コスト・高パフォーマンスなストレージから低コスト・低パフォーマンスなストレージへのデータ移動プロセスを大幅にシンプル化、および自動化できます。大切なデータインサイトには、一切影響を生じません。
データティアについてさらに詳しく- Hot:最もパフォーマンスにすぐれたインスタンスで、更新やクエリの頻度も高いティア
Warm:パフォーマンスが低めのインスタンスで、クエリの頻度も低いティア
Cold:読み取りのみ、クエリの頻度は稀で、検索可能スナップショットによりパフォーマンスを維持したままストレージ使用量を大幅削減するティア
スナップショットのライフサイクル管理
バッググラウンドで稼働するスナップショット・マネージャーとして、スナップショットのライフサイクル管理(SLM)APIを使って、Elasticsearchクラスターのスナップショットを撮る間隔を定義できます。SLM専用のUIがあり、SLMポリシーの保持期間を設定したり、スナップショットを自動で作成・削除したり、スケジュールを指定できるようになっています。どのクラスターも適切にバックアップできるだけでなく、顧客とのSLAに従って復旧を実施するために必要な頻度のバックアップを確実に実行することができます。
SLMについて詳しくはこちらスナップショットと復元
スナップショットとは、実行中のElasticsearchクラスターのバックアップです。個々のインデックスのスナップショットを撮ることも、クラスター全体で撮ることもでき、スナップショットは共有ファイルシステムのレポジトリに格納されます。プラグインを使用し、リモートレポジトリを選択することもできます。
スナップショットと復元についてさらに詳しく検索可能スナップショット
“検索可能スナップショット”は、直接クエリできるスナップショットです。通常のスナップショットを復元する場合と比べて、検索にかかる時間を劇的に短縮できます。各スナップショットインデックスの必要な部分を読み取り専用で活用し、検索リクエストを実行する仕組みです。検索可能スナップショットとColdティアを組み合わせて、Amazon S3やAzure Storage、Google Cloud Storageといったオブジェクトストレージシステムにレプリカシャードをバックアップすると、データストレージコストを大幅に削減できます。もちろん、検索のための完全なアクセスが保たれます。
検索可能スナップショットについてさらに詳しくデータのロールアップ
古いデータを使えるようにしておくと、分析には非常に役立ちます。問題は、膨大な量のデータのアーカイブに費用がかかることでした。したがって膨大な過去データの保持期間を、その有用性よりも、コスト面の制約で決定されることが少なくありませんでした。Elasticのロールアップは、過去データを要約して格納する機能です。分析に使えるように維持しつつ、生データにかかるストレージコストを大きく引き下げます。
ロールアップについてさらに詳しく変換
変換は、2次元的な表によるデータ構造です。このデータ構造は、インデックス済みデータをより処理しやすくします。変換は、アグリゲーションを通じてデータをエンティティ中心のインデックスにピボットします。データを変換、要約することによって、可視化を可能にするだけでなく、他の機械学習分析に向けたソースとして分析するなど、代替的方法で分析することもできます。
変換について詳しくはこちらアップグレードアシスタントAPI
アップグレードアシスタントAPIを活用すれば、Elasticsearchクラスターのステータスを確認・アップグレードしたり、以前のメジャーバージョンで作成されたインデックスを再インデックスしたりすることができます。Elasticsearchで、次のメジャーバージョンへ移行する際に便利です。
アップグレードアシスタントAPIについて詳しくはこちらAPIキーの管理
APIキーの管理には、ユーザーが独自のキーを管理できる程度にフレキシブルで、個々のロールに応じてアクセスを制限できる機能が必要です。ユーザーは専用UIを使ってAPIキーを作成したり、長い期間Elasticsearchと通信する認証情報として使用したりすることができます。他の多くのソフトウェアでは、自動化スクリプトや自動化ワークフローの統合という形で提供されています。
APIキーの管理についてさらに詳しく管理と運用
セキュリティ
適切なユーザーに適切なアクセス権限を付与する、それがElastic Stackのセキュリティ機能です。たとえばIT部門や事業部、アプリ開発チームごとに善意のユーザーを管理することで、不正な侵入を防ぐことができます。また、お客様や経営陣にも個別の権限を付与して、Elastic Stackのデータを安全に、安心して共有できます。
Elasticsearchを安全に設定する
設定そのものがセンシティブである場合があります。設定値の保護をファイルシステム権限だけに頼っても、十分に安全とは言えません。このようなユースケースでは、Elasticsearchのキーストアを使ってセンシティブなクラスター設定への望ましくないアクセスを防止できます。また、キーストアにオプションのパスワード保護を追加して、セキュリティを高めることも可能です。
設定を安全に保つ仕様についてさらに詳しく通信の暗号化
SSL/TLSを用いたトラフィック暗号化や、Node認証証明書をはじめとするテクノロジーで、Elasticsearch Nodeのデータに対するネットワークベースの攻撃を阻止しています。
通信の暗号化について詳しくはこちら保存データの暗号化
Elastic Stackに保存データを暗号化する設定不要の機能が搭載されているわけではなく、ホストマシンにおけるディスクレベルの暗号化は常に推奨されています。スナップショットの対象についても、保存データが確実に暗号化されていることが必要です。
ロールベースのアクセス制御(RBAC)
ロールベースのアクセス制御(RBAC)によって、ロールに権限をアサインし、ユーザーやグループにロールをアサインすることで、ユーザーを認証できます。
RBACについて詳しくはこちら属性ベースのアクセス制御(ABAC)
Elastic StackのSecurityオプションは、属性ベースのアクセス制御(ABAC)メカニズムも備えています。属性を使用して、検索クエリやアグリゲーションがアクセスするドキュメントを制約します。このメカニズムで、ロール定義にアクセスポリシーを導入することが可能です。エンドユーザーは、必要なすべての属性を備える特定のドキュメントしか読み取ることができません。
ABACについてさらに詳しくフィールドおよびドキュメントレベルのセキュリティ
フィールドレベルのセキュリティ対策で、ユーザーが読み取りアクセスを持つフィールドを制限します。ドキュメントベースの読み取りAPIでは、どのフィールドにアクセスを許可するか設定できます。
フィールドレベルのセキュリティについて詳しくはこちらドキュメントレベルのセキュリティ対策で、ユーザーが読み取りアクセスを持つドキュメントを制限します。ドキュメントベースの読み取りAPIで、どのドキュメントにアクセスを許可するか設定できます。
ドキュメントレベルのセキュリティについて詳しくはこちら監査ログ
認証の失敗や拒否された接続など、セキュリティ関連イベントを追跡する監査を有効化することができます。こうしたイベントのログを記録しておくことによって、クラスター上の疑わしいアクティビティを監視し、攻撃が発生した際のエビデンスとして使用することができます。
監査ログについてさらに詳しくIPフィルター
クラスターに追加するノードや、アプリクライアント、ノードクライアント、トランスポートクライアントなどにIPフィルターを追加することができます。ブラックリストに入っているIPアドレスがノードに入ると、セキュリティ機能がElasticsearchへの接続をただちに遮断し、リクエスト処理が停止されます。
IPアドレスまたは範囲
xpack.security.transport.filter.allow: "192.168.0.1" xpack.security.transport.filter.deny: "192.168.0.0/24"
ホワイトリスト
xpack.security.transport.filter.allow: [ "192.168.0.1", "192.168.0.2", "192.168.0.3", "192.168.0.4" ] xpack.security.transport.filter.deny: _all
IPv6
xpack.security.transport.filter.allow: "2001:0db8:1234::/48" xpack.security.transport.filter.deny: "1234:0db8:85a3:0000:0000:8a2e:0370:7334"
ホスト名
xpack.security.transport.filter.allow: localhost xpack.security.transport.filter.deny: '*.google.com'IPフィルターについてさらに詳しく
セキュリティレルム
Elastic Stackのセキュリティオプションで実行されるユーザー認証は、レルムと、1つ以上のトークンに基づく認証サービスを使用します。レルムは認証トークンに基づいてユーザーを解決、認証する役割を果たします。Elastic Stackのセキュリティオプションでは、多数の内蔵型レルムが提供されています。
セキュリティレルムについて詳しくはこちらシングルサインオン(SSO)
Elastic StackはバックエンドサービスにElasticsearchを使用しており、KibanaへのSAMLシングルサインオン(SSO)に対応しています。SAML認証の導入で、OktaやAuth0といった外部IDプロバイダーを使ったKibanaへのログインが可能になります。
SSOについて詳しくはこちらサードパーティセキュリティの統合
Elastic Stackのセキュリティ仕様がサポートしない認証システムをお使いの場合も、カスタムレルムを作成してユーザーを認証することができます。
サードパーティセキュリティについてさらに詳しく管理と運用
アラート
Elasticsearchのクエリ機能をフルパワーで活用するElastic Stackのアラート機能なら、データの重要な変化を見逃しません。つまり、Elasticsearchでクエリできるものは何でも通知可能です。
高可用でスケーラブルなアラート
アラートのニーズ対応で、Elastic Stackが組織の規模を問わず信頼されているのには、理由があります。あらゆるソース、あらゆるフォーマットのデータを確実かつ安全にインジェストすることで、アナリストは重要なデータをリアルタイムに検索、分析、可視化できます。すべてにカスタム可能で、信頼性の高いアラートを設定できます。
アラートについて詳しくはこちらメール、Webフック、IBM Resilient、Jira、Microsoft Teams、PagerDuty、ServiceNow、xMatters、Slackで通知
メール、IBM Resilient、Jira、Microsoft Teams、PagerDuty、ServiceNow、xMatters、Slackに対応する内蔵の統合機能で、アラートをリンク付けできます。Webフックアウトプットを経由して、あらゆるサードパーティのシステムを連携させることも可能です。
アラートの通知オプションについて詳しくはこちら管理と運用
クライアント
Elasticsearchなら、ユーザーが「使いやすい」と感じる方法で自由にデータを扱うことができます。各種のRESTful APIや言語クライアント、堅牢なDSLを備え、SQLにも対応。あらゆる方法をスムーズに実行できる柔軟性があります。
言語クライアント
Elasticsearchは標準のRESTful APIとJSONを使用します。さらにElasticが開発・保守するクライアントライブラリがJava、Python、.Net、SQL、PHPといった多数の言語で用意されているほか、コミュニティによるクライアントもあります。無限の可能性を持つElasticsearch。あなたの自由なアイデアを妨げません。
使用可能なクライアントプログラミング言語を探すElasticsearch DSL
ElasticsearchはJSONベースでクエリを定義する完全なクエリDSL(ドメイン固有言語、domain-specific language)を提供しています。クエリDSLはパワフルな検索オプションとして、用語/フレーズのマッチング、あいまい検索、ワイルドカード、正規表現、ネストクエリ、ジオクエリなどを含む全文検索に対応しています。
Elasticsearch DSLについてさらに詳しくGET /jp/_search { "query": { "match" : { "message" : { "query" : "this is a test", "operator" : "and" } } } }
Elasticsearch SQL
Elasticsearch SQLは、ElasticsearchでリアルタイムにSQL風のクエリを実行できる機能です。クライアントはRESTインターフェース、コマンドライン、JDBCのいずれでもSQLを使用することができ、Elasticsearch内でデータ検索やアグリゲーションがネイティブに実行されます。
Elasticsearch SQLについてさらに詳しくEvent Query Language(EQL)
連続のイベントをクエリして、特定の条件に一致させる機能を備えるEvent Query Language(EQL)は、セキュリティ分析をはじめとするユースケースを目的として開発されています。
EQLについてさらに詳しくJDBCクライアント
Elasticsearch SQL JDBCドライバーは、豊富で包括的な仕様を備えたElasticsearchのためのJDBCドライバーです。JDBCコールをElasticsearch SQLに転換するタイプ4ドライバー(プラットフォーム非依存でスタンドアローン、データベース直結の純粋なJavaドライバー)です。
JDBCクライアントについてさらに詳しくODBCクライアント
Elasticsearch SQL ODBCドライバーは、Elasticsearchのための多機能な3.80 ODBCドライバーです。コアレベルドライバーとしてElasticsearch SQL ODBC APIを通じてアクセスできるすべての機能を提供し、ODBCコールをElasticsearch SQLに変換します。
ODBCクライアントについてさらに詳しくElasticsearch向けTableauコネクター
Tableau DesktopやTableau Serverのユーザーは、Elasticsearch向けTableauコネクターを使うことでElasticsearchのデータにより簡単にアクセスできます。
Tableauコネクターをダウンロード管理と運用
REST API
Elasticsearchが提供する包括的でパワフルなREST APIを通じて、クラスターを操作することができます。
ドキュメントAPI
ドキュメントAPIを使って、個々のドキュメント上で、または複数のドキュメントを横断してCRUD操作(作成、読み取り、アップデート、削除)を実行することができます。
使用可能なドキュメントAPIを探す検索API
Elasticsearchの検索APIを活用して、単なる全文検索以上の機能を実装することができます。タームやフレーズ、自動入力などの推測/提案機能の実装に役立つだけでなく、表示順位の評価や、検索でドキュメントが返された、または返されなかった理由のフィードバックを実施することもできます。
検索APIについてさらに詳しくアグリゲーションAPI
アグリゲーションフレームワークが、検索クエリに基づいてアグリゲーション済みデータを提供します。たとえるなら、アグリゲーションと呼ばれるシンプルなブロックを用意しておき、それを組み合わせて複雑なデータのサマリーを構築する、そんな仕組みです。アグリゲーションを、一連のドキュメントから分析的な情報を取得する作業の単位としてとらえることができます。
使用可能なアグリゲーションAPIを探すメトリックアグリゲーション
バケットアグリゲーション
パイプラインアグリゲーション
マトリックスアグリゲーション
累積基数アグリゲーション
ジオヘクスグリッドアグリゲーション
インジェストAPI
各種のインジェストAPIを使ってデータパイプラインでCRUD操作を実行したり、シミュレートパイプラインAPIを使って一連のドキュメントに対し特定のパイプラインを実行したりできます。
使用可能なインジェストAPIを探す管理API
豊富な管理系APIを使用し、プログラムコードからElasticsearchクラスターを管理できます。インデックスとマッピングの管理や、クラスターとノードの管理、ライセンスとセキュリティの管理など、幅広い管理系APIが揃っています。結果を「ヒトがわかる言語」の形式にするcat APIもおすすめです。
管理と運用
統合
オープンソースで言語不問。プラグインと統合を使って、Elasticsearchの機能性を手軽に拡張することができます。
Elasticsearch-Hadoop
Apache Hadoop向けElasticsearch(Elasticsearch-Hadoop、ES-Hadoop)は、無料かつオープンな独立型、自己充足型の小型ライブラリです。ES-Hadoopを使うと、HadoopジョブでElasticsearchを操作することができます。Hadoopデータに役立つダイナミックな検索アプリケーションを手軽に構築したり、全文検索や、地理空間情報検索、アグリゲーション機能を使った深く遅延の少ない分析を実行したりできます。
ES-Hadoopについてさらに詳しくApache Hive
Elasticsearch for Apache Hadoopは、Apache Hiveを全面的にサポートしています。Apache Hiveは、手軽なデータ要約、アドホッククエリ、Hadoop互換ファイルシステムに格納された大規模データセットの分析を実施するHadoop向けウェアハウスシステムです。
Apache Hiveの統合についてさらに詳しくApache Spark
Elasticsearch for Apache Hadoopは、高速な汎用クラスターコンピューティングシステムのApache Sparkを全面的にサポートしています。Java、Scala、Pythonの高レベルAPIと、一般的な実行グラフをサポートする最適化エンジンを提供します。
Apache Sparkの統合についてさらに詳しくビジネスインテリジェンス(BI)
JDBC/ODBCインターフェースを使えば、さまざまなサードパーティ製BIアプリでElasticsearch SQLの機能を活用することができます。
使用可能なBIとSQL統合についてさらに詳しくプラグインと統合機能
無料かつオープンで言語不問。プラグインと統合を使って、Elasticsearchの機能性を手軽に拡張することができます。プラグインは、ユーザーがカスタマイズした方法でElasticsearchのコア機能を拡張します。統合とは、Elasticsearchを使いやすくする外部ツールやモジュールのことです。
使用可能なElasticsearchプラグインを探すAPI機能拡張プラグイン
アラートプラグイン
分析プラグイン
ディスカバリープラグイン
インジェストプラグイン
管理プラグイン
マッパープラグイン
セキュリティプラグイン
スナップショット/レポジトリ復元プラグイン
格納プラグイン
管理と運用
デプロイ
パブリッククラウド、プライベートクラウド、またはハイブリッドでも。Elasticsearchを簡単にデプロイして管理できます。
ダウンロードとインストール
始め方は非常に簡単です。アーカイブやパッケージマネージャーから、ElasticsearchとKibanaをダウンロード・インストール。すぐにデータをインデックスしたり、分析、可視化することができます。機械学習やセキュリティ、グラフ分析などの有償オプション(プラチナ)はデフォルトの配布に含まれており、30日間無料でお試しいただけます。
Elastic StackをダウンロードElastic Cloud
クラウドでElasticプロダクトを手軽にデプロイ、運用、スケーリングするSaaSとして、導入数が増えているElastic Cloud。使いやすいマネージドのElasticsearchエクスペリエンスとして、またパワフルですぐに開始できる検索ソリューションとして、Elastic CloudはElasticプロダクトをシームレスに導入する出発点となります。Elastic Cloudのすべてのプロダクトを14日間無料でお試しください。クレジットカードの登録は必要ありません。
Elastic Cloudを使いはじめるElasticsearch Serviceの無料トライアルを開始する
Elastic Cloud Enterprise(ECE)
Elastic Cloud Enterprise(ECE)は規模や環境を問わず、ElasticsearchやKibanaをプロビジョニング、管理、監視。すべての管理が、一つのコンソールで完結します。ElasticsearchやKibanaは、物理サーバー、仮想環境、プライベートクラウド、パブリッククラウド内のプライベート空間、またはパブリッククラウド(Google、Azure、AWSなど)からお好きな環境に展開できます。
30日間の無料トライアルでECEをお試しくださいElastic Cloud on Kubernetes
Kubernetes Operatorのパターンに基づいて開発されたElastic Cloud on Kubernetes(ECK)は、Kubernetesの基本的なオーケストレーション機能を拡張することにより、KubernetesでのElasticsearchやKibanaの設定/管理をサポートします。Elastic Cloud on Kubernetesを使うと、KubernetesでElasticsearchを実行するためのデプロイ、アップグレード、スナップショット、スケーリング、高可用性、セキュリティなどのプロセスを単純化することができます。
Elastic Cloud on Kubernetesを使ったデプロイインジェストとエンリッチ
インジェストとエンリッチ
取り込み
あらゆる方法でデータをElastic Stackに入れることができます。RESTful APIを使えるほか、クライアントプログラミング言語各種、インジェストノード、軽量なシッパー、あるいはLogstashを使うことも可能。サポート言語リストに拘束されることがありません。オープンソースだから、インジェストするデータタイプにも制限はありません。特定のデータタイプをシッピングする必要がある場合も、カスタムのインジェストメソッドの構築に必要となるライブラリと手順が揃っています。成果をコミュニティにシェアすることもできます。同じメソッドを必要とする人のために、公開することが可能です。
クライアントとAPI
Elasticsearchは標準のRESTful APIとJSONを使用します。さらにElasticが開発・保守するクライアントライブラリがJava、Python、.Net、SQL、PHPといった多数の言語で用意されているほか、コミュニティによるクライアントもあります。無限の可能性を持つElasticsearch。あなたの自由なアイデアを妨げません。
インジェストノード
Elasticsearchが提供する多彩なノードタイプの1つに、データ投入専用のノードがあります。インジェストノードは1つ以上の投入プロセッサーで構成されたパイプラインの事前処理を実行することができます。投入プロセッサーの動作タイプと必要なリソースにより、特定のタスクのみ実行する投入専用ノードを使う方がよい場合があります。
Beats
Beatsは、エージェントとしてサーバーにインストールできるオープンソースのデータシッパー。運用に関するデータをElasticsearchやLogstashに送ります。一般的なログやメトリック、その他さまざまなタイプのデータを捉えることができます。
Linux監査ログ用Auditbeat
ログファイル用Filebeat
クラウドデータ用Functionbeat
アベイラビリティデータ用Heartbeat
システムジャーナル用Journalbeat
インフラメトリック用Metricbeat
ネットワークトラフィック用Packetbeat
Windowsイベントログ用Winlogbeat
Logstash
Logstashは、リアルタイムでパイプライン処理に対応するオープンソースのデータ収集エンジンです。Logstashは異なるソースから動的にデータを集め、正規化して指定の送信先に届けます。あらゆるデータをクレンジングし、アクセシブルになるよう整形。下流工程にある高度な分析や可視化など、幅広いユースケースで使えるデータにします。
コミュニティのシッパー
ユースケースに解決を必要する具体的な課題がある場合、コミュニティBeatの活用をおすすめしています。Elasticは、そのプロセスをシンプル化するインフラを用意しました。libbeatライブラリにすべてGoで記述されているAPIが提供されています。どのBeatsでも、このAPIを使用してElasticsearchにデータをシッピングしたり、入力オプションの設定や、ロギングの実装などを行うことができます。
Beatsへのコントリビューションを行うコミュニティは100以上。Cloudwatchログおよびメトリックや、GitHubアクティビティ、Kafkaに関するトピックスからMySQL、MongoDB Prometheus、Apache、Twitterまで、さまざまなエージェントがあります。
コミュニティが開発したBeatsを探すインジェストとエンリッチ
データエンリッチメント
アナライザーやトークナイザー、フィルター、エンリッチメントをはじめ、各種オプションが豊富に揃うElasticsearchなら、生データから貴重な情報を引き出せます。
Elastic Common Schema
Elastic Common Schema(ECS)を使って、多様なソースを持つデータを一元的に分析できます。検知ルール、機械学習ジョブ、ダッシュボード、その他のセキュリティコンテンツを幅広く適用できるだけでなく、検索範囲を精緻に絞り込むことができ、フィールド名も覚えやすくなります。
各種プロセッサー
Ingestノードを使用して、実際のドキュメントをインデックスする前にドキュメントを事前処理することができます。Ingestノードはバルクリクエストやインデックスリクエストを遮断し、ドキュメントを変換してから再びバルクAPIまたはインデックスAPIにドキュメントを渡します。Ingestノードにはappend、convert、date、dissect、drop、fail、grok、join、emove、set、split、sort、trimほか、25種類以上のプロセッサーがあります。
各種アナライザー
分析とは、テキストの変換プロセスです。Eメールにかならず"本文"がついてくるのと同じです。検索のために倒置されたインデックスと、トークンやタームを切り離すことはできません。内蔵のアナライザーを分析用のアナライザーとして使うことも、インデックスごとに、トークナイザーやフィルターを組み合わせて作成したカスタムアナライザーを定義して使用することもできます。
例:標準アナライザー(デフォルト)
インプット:"The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."
Output: the
2
quick
brown
foxes
jumped
over
the
lazy
dog's
bone
各種トークナイザー
トークナイザーは文字のストリームを受け取り、個別のトークン(通常は個別の単語)に分解してから、トークンのストリームを出力します。トークナイザーは各タームの順序や位置も記録しています(フレーズや単語の近接性クエリに使用)。先頭と末尾の文字はタームが表現する元の単語から控除されます(検索スニペットの強調に使用)。Elasticsearchは多数のトークナイザーを搭載しており、そのトークナイザーを使ってカスタムアナライザーを構築することもできます。
インプット:"The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."
アウトプット:The
2
QUICK
Brown-Foxes
jumped
over
the
lazy
dog's
bone.
各種フィルター
トークンフィルターは、トークナイザーから来るトークンのストリームを受け取り、修正(例:小文字に変える)や、削除(例:ストップワードを除外する)、追加(例:同義語)を行うことができます。Elasticsearchは多数のトークンフィルターを搭載しており、そのトークンフィルターを使ってカスタムアナライザーを構築することもできます。
文字フィルターを使って、トークナイザーに渡される前の文字を、事前処理することができます。文字フィルターは、元のテキストを文字のストリームとして受け取り、文字を追加、削除、または変更してそれを変換します。Elasticsearchは多数の文字フィルターを搭載しており、その文字フィルターを使ってカスタムアナライザーを構築することもできます。
文字フィルターについてさらに詳しく言語アナライザー
検索は、母国語で。Elasticsearchは30以上の言語アナライザーを提供しており、ロシア語やアラビア語、中国語などラテン文字を使用しない言語にも対応します。
動的マッピング
フィールドタイプやマッピングタイプを、事前に定義する必要はありません。ドキュメントをインデックスする際に、動的マッピング機能が新しいフィールド名を自動で追加してくれます。
一致エンリッチプロセッサー
一致投入プロセッサーを使うことにより、投入時にデータを参照して、エンリッチ済みデータをプルする最適なインデックスを指定することができます。特に、データに要素を追加するプロセスが不可欠なBeatsのユーザーに便利です。BeatsからLogstashにピボットする必要がなく、インジェストパイプラインだけで処理することが可能になります。また一致エンリッチプロセッサーによるデータの正規化は、高度な分析や一般的なクエリにも役立ちます。
地理空間一致エンリッチプロセッサー
地理空間一致エンリッチプロセッサーは、地理データを活用して検索とアグリゲーションの機能性を高めます。クエリやアグリゲーションを地理座標で定義する必要がありません。一致エンリッチプロセッサーと同様に、投入時にデータを参照して、エンリッチ済みデータをプルする最適なインデックスを判断することができます。
データストレージ
データストレージ
柔軟性
Elastic Stackは、あらゆるユースケースに対応するパワフルなソリューションです。中核となる高度な検索機能のほか、ドキュメントストレージにも、時系列分析やメトリック分析、地理空間分析のための最適なツールにもなります。多様なニーズに応えるフレキシブルな設計です。
データタイプ
Elasticsearchは、ドキュメントのフィールドについてさまざまなデータタイプをサポートしています。また、各データタイプについて複数のサブタイプも提供しています。それが、種類を問わず、データを可能な限り効率的かつ効果的に格納、分析、活用できる理由です。Elasticsearchで最適に扱うことができるデータタイプに、次のようなものがあります。
テキスト
シェイプ
数
ベクター
ヒストグラム
日時/時系列
フラット化されたフィールド
地理座標/ジオシェイプ
非構造化データ(JSON)
構造化データ
全文検索(転置インデックス)
Elasticsearchは、超高速の全文検索を実現する目的で開発された倒置インデックスと呼ばれる構造を使用します。倒置インデックスは、ドキュメントに出現するユニークなすべての単語を列挙したリストと、各単語がどのドキュメントに出現するかを列挙したリストで構成されます。倒置インデックスを作成する際、はじめに各ドキュメントのコンテンツフィールドを単語(ターム、またはトークンと呼ばれます)に分割します。次に、ユニークなすべての単語を列挙し、並べ替えたリストを作成します。最後に、各タームが出現するドキュメントをリストアップします。
ドキュメント格納(非構造化データ)
Elasticsearchは、構造化をデータ投入や分析の要件としていません(構造化されていれば、スピードが向上します)。シンプルに使いはじめることができる設計で、ドキュメントストアとしても効率的です。ElasticsearchはNoSQLデータベースではありませんが、類似の機能性を備えています。
時系列/分析(列での格納)
転置インデックスでクエリを実行すると、検索タームをすばやく参照できます。しかし、並べ替えやアグリゲーションを実行するには、別のデータアクセスパターンが必要です。タームを参照してドキュメントを見つける代わりに、ドキュメントを参照してフィールドにあるタームを探せるようにしなければなりません。ドキュメントの値は、インデックス時にElasticsearchのオンディスクデータ構造になっています。そのため前述のデータアクセスパターンを使うことができ、検索を列で実行することが可能です。Elasticsearchが時系列とメトリック分析にすぐれた能力を発揮できる理由もここにあります。
データストレージ
セキュリティ
セキュリティは、クラスターレベルに限った問題ではありません。Elasticsearchには、フィールドレベルでデータの安全性を保つ仕組みが備わっています。
フィールドとドキュメントレベルのAPIセキュリティ
フィールドレベルのセキュリティ対策で、ユーザーが読み取りアクセスを持つフィールドを制限します。ドキュメントベースの読み取りAPIで、どのフィールドにアクセスを許可するか定めることが可能です。
ドキュメントレベルのセキュリティ対策で、ユーザーが読み取りアクセスを持つドキュメントを制限します。ドキュメントベースの読み取りAPIで、どのドキュメントにアクセスを許可するか定めることが可能です。
ドキュメントレベルのセキュリティについてさらに詳しく保存データの暗号化
Elastic Stackに保存データを暗号化するメニューは搭載されていませんが、ホストマシンにおけるディスクレベルの暗号化は常に推奨されています。スナップショットの対象についても、保存先データが確実に暗号化されていることが必要です。
データストレージ
管理職
Elasticsearchのクラスターやノード、インデックス、シャード、そしてデータ自体も、完全に管理することができます。
クラスター化インデックス
クラスターとは、共同ですべてのデータを保有し、全ノードを横断してフェデレーションによるインデキシングと検索を提供する1つ以上のノード(サーバー)の集合です。このアーキテクチャーでは、簡単に水平方向へのスケールを行うことができます。Elasticsearchはクラスター管理のための包括的でパワフルなREST APIとUIを提供しています。
データスナップショットと復元
スナップショットとは、実行中のElasticsearchクラスターのバックアップです。個々のインデックスのスナップショットを撮ることも、クラスター全体で撮ることもでき、スナップショットは共有ファイルシステムのレポジトリに格納されます。プラグインを使用し、リモートレポジトリを選択することもできます。
ロールアップインデックス
古いデータを使えるようにしておくと、分析には非常に役立ちます。問題は、膨大な量のデータのアーカイブに費用がかかることでした。したがって膨大な過去データの保持期間を、その有用性よりも、コスト面の制約で決定されることが少なくありませんでした。Elasticのロールアップは、過去データを要約して格納する機能です。分析に使えるように維持しつつ、生データにかかるストレージコストを大きく引き下げます。
検索と分析
検索と分析
全文検索
Elasticsearchは、パワフルな全文検索機能で広く知られています。中核となる転置インデックスが高速処理を実現し、調整可能な関連性スコアリングや高度なクエリDSL、幅広い検索拡張など、機能性にすぐれています。
倒置インデックス
Elasticsearchは、超高速の全文検索を実現する目的で開発された倒置インデックスと呼ばれる構造を使用します。倒置インデックスは、ドキュメントに出現するユニークなすべての単語を列挙したリストと、各単語がどのドキュメントに出現するかを列挙したリストで構成されます。倒置インデックスを作成する際、はじめに各ドキュメントのコンテンツフィールドを単語(ターム、またはトークンと呼ばれます)に分割します。次に、ユニークなすべての単語を列挙し、並べ替えたリストを作成します。最後に、各タームが出現するドキュメントをリストアップします。
ランタイムフィールド
ランタイムフィールドは、クエリ時にデータを要求する(schema on readの)フィールドです。ドキュメントのインデックス後を含むあらゆるタイミングで作成、修正でき、クエリの一部として定義できます。ランタイムフィールドはインデックス済みフィールドと同じインターフェースでクエリにエクスポーズされます。フィールドはデータストリーム中の一部のインデックスのランタイムフィールドにすることも、データストリーム中の他のインデックスのインデックス済みフィールドにすることも可能で、かつ、どのフィールドを使うかをクエリ側で認識する必要はありません。インデックス済みフィールドを使うとクエリを最適なパフォーマンスで実行できるのに対し、ランタイムフィールドにはインデックス済みドキュメントのデータ構造を後からフレキシブルに変更できるメリットがあり、補完的に使うことができます。
ランタイムフィールドのルックアップ
ランタイムフィールドのルックアップを用いると、ドキュメントをリンクする両方のインデックスにキーを定義することにより、ルックアップインデックスからの情報をプライマーインデックスからの結果と柔軟に結びつけることができます。この機能は、ランタイムフィールドと同様、クエリ時に用いられ、柔軟なデータエンリッチメントを可能にします。
クラスター横断検索
クラスター横断検索(cross-cluster search、CCS)で、ノードを複数のクラスターを横断する連携クライアントのように実行させることができます。クラスター横断検索ノードは、リモートクラスターに直接は加わりません。ほとんど負荷をかけずにリモートクラスターへ接続し、連携された検索リクエストを実行します。
関連性スコアリング
マッチするドキュメントのスコアを定義するのが類似度(関連性スコアリング/順位付けモデル)です。デフォルトで、ElasticsearchはBM25類似度を使用します。これはTF/IDFベースの高度な類似度で、(名前など)短いフィールドに最適なtf正規化に内蔵されています。さらにこの他にも、多数の類似度オプションを使用することができます。
ベクトル検索(ANN)
HNSWアルゴリズムに基づく近似最近傍(ANN)のサポートを新たに開始したLucene 9を再構築し、_knn_search APIエンドポイントを導入しました、ベクトル類似度を活用し、よりスケーラブルで高パフォーマンスな検索を実行できます。そのからくりは、再現率とパフォーマンスのトレードオフです。すなわち、再現率をわずかに犠牲にすることで、(既存の総当たり式ベクトル類似度メソッドに比べた場合に)非常に大規模なデータセットではるかにすぐれたパフォーマンスを実現させています。
Query DSL
全文検索を実行するには、頼れるクエリ言語が必要です。ElasticsearchはJSONベースでクエリを定義する完全なクエリDSL(ドメイン固有言語、domain-specific language)を提供しています。シンプルなクエリでタームやフレーズをマッチさせることができ、複数のクエリの組み合わせに対応する複合クエリを開発することも可能です。クエリ時にフィルターを適用して、関連性スコアの算出前にドキュメントを除外することもできます。
強調表示
強調表示機能は、検索結果から1つ以上のフィールドの文字列をハイライトします。クエリがマッチしている箇所が一目でわかります。強調表示をリクエストすると、レスポンスに強調表示要素が追加され、強調表示されたフィールドとフラグメントを含む検索ヒット部分を示します。
自動入力
入力予測により、自動入力機能や、入力と同時に検索結果を表示するエクスペリエンスが提供されています。エンドユーザーの入力と同時に関連性の高い結果へ導くナビゲーターとなり、検索精度も高くなります。
入力予測
検索中に「もしかして~ですか?」と提案する、フレーズの入力予測機能を追加できます。ngram言語モデルに基づいて重み付けされた個別のトークンは使用しません。用語の入力予測機能に付加的なロジックを構築することにより、完全に修正されたフレーズを選択します。この入力予測機能は、共起性と頻度に基づいて取り上げるトークンを決定にすぐれた能力を発揮します。
修正(スペルチェック)
編集スペルチェックは、編集距離からタームを提案する予測機能を応用しています。提案されるテキストはあらかじめ分析されており、提案されるタームは、分析されたテキストトークンごとに出力されます。
パーコレーター
クエリを使ってインデックスに格納されたドキュメントを探す、というのが標準的な検索モデルです。それとは対照的に、パーコレーターを使ってインデックスに格納されたクエリにドキュメントをマッチさせることができます。パーコレート
クエリは一部にドキュメントを含んでおり、そのドキュメントをインデックスに格納されたクエリとマッチさせるために使用します。
クエリプロファイラー/オプティマイザー
このプロファイルAPIは、検索リクエストにおける個々のコンポーネントの実行について、詳しいタイミングに関する情報を提供します。低レベルで検索リクエストが実行された方法に関する洞察が提供されるため、特定のリクエストが遅延した理由を把握したり、改善措置を講じることができます。
権限ベースの検索結果表示
フィールドレベルのセキュリティとドキュメントレベルのセキュリティを備え、エンドユーザーの検索において、読み取りアクセスのある範囲の結果だけを表示します。具体的には、ドキュメントベースの読み取りAPIからアクセスできるフィールドとドキュメントを制限します。
動的にアップデート可能な同義語
アナライザーリロードAPIを使って、同義語の定義の再読み込みを開始することができます。設定済みの同義語ファイルに含まれるコンテンツを再読み込みし、フィルターが使用する同義語の定義を更新します。_reload_search_analyzers APIは1つ以上のインデックスで実行することができ、設定済みのファイルに含まれる同義語の再読み込みをトリガーします。
結果のピン留め
ドキュメントを指定して、クエリに一致する結果の中で優先度を上げることができます。ある検索で"オーガニック"に返される結果に比べ、精選されたドキュメントを優先させて検索ユーザーをガイドする目的などに使うことができます。優先された("ピン留め")されたドキュメントは、_idフィールドに格納されるドキュメントIDを使って特定することができます。
検索と分析
分析
検索は「最初の一歩」です。Elasticsearchのパワフルな分析機能を使って、欲しいデータを入手したり、より深い意味を見出してみましょう。アグリゲーション結果の表示や、ドキュメント間の関連性分析、閾値ベースのアラート設定といった高度な作業も、土台となるパワフルな検索のおかげで簡単に行えます。
アグリゲーション
アグリゲーションフレームワークが、検索クエリに基づいてアグリゲーション済みデータを提供します。たとえるなら、アグリゲーションと呼ばれるシンプルなブロックを用意しておき、それを組み合わせて複雑なデータのサマリーを構築する、そんな仕組みです。アグリゲーションを、一連のドキュメントから分析的な情報を取得する作業の単位としてとらえることができます。
メトリックアグリゲーション
バケットアグリゲーション
パイプラインアグリゲーション
マトリックスアグリゲーション
ジオヘクスグリッドアグリゲーション
ランダムサンプラーアグリゲーション
グラフ探索
グラフ探索APIを使って、Elasticsearchインデックス中のドキュメントや用語に関する情報を抽出/要約することができます。グラフ探索APIについて理解するベストな方法は、Kibanaでグラフを使った関係性の探索を行ってみることです。
検索と分析
機械学習
Elasticの機械学習は、トレンドや周期性などからデータの振る舞いを自動的に、リアルタイムにモデル化し、すばやく問題を特定して原因分析を手助けします。さらに、誤検出を防ぎます。
時系列データによる将来予測
Elasticの機械学習は、データの正常な動作に関するベースラインを作成します。この情報を活用すれば、未来の動作を推定できます。未来の特定の日時の、時系列中の値を予測する、またはある時系列中の値が未来に発生する確立を推定する、といった使い方が可能です。
時系列データの異常検知
Elasticの機械学習機能は、データの正常な動作の正確なベースラインを作成し、そのデータの異常なパターンを特定することによって時系列データ分析を自動化します。異常が検知され、スコア付けされるだけではありません。独自の機械学習アルゴリズムを使用して、データ中にある統計的に重要な影響要因への関連付けまで実行します。
数値や回数、頻度における一時的な偏差に関連する異常
統計的稀出性
データ母集団の一部における異常な動作
異常の通知
アラートに教師なしの機械学習を組み合わせて、ルールや閾値の定義が難しい異常を検知しましょう。アラートフレームワークの異常スコアを活用し、問題が発生した場合に通知を受け取ることができます。
推論
推論により、リグレッションや分類などの教師あり機械学習プロセスをバッチ分析だけでなく、連続的に実行することができます。教育済み機械学習モデルを流入データに使えるのも、推論のおかげです。