クラスターとは、共同ですべてのデータを保有し、全ノードを横断してフェデレーションによるインデキシングと検索を提供する1つ以上のノード(サーバー)の集合です。Elasticsearchのクラスターはプライマリシャードとレプリカシャードの2つを搭載しており、ノードがダウンした場合にフェイルオーバーの役割を果たします。プライマリシャードに問題が生じると、レプリカシャードが代替します。
クラスタリングと高可用性についてさらに詳しく意図的であるかを問わず、何らかの理由で任意のノードがクラスターから切り離される場合、複製とシャードのリバランスを活用して、マスターノードに代替されます。この一連のアクションは、各シャードを可能な限りすみやかに、完全に複製することで、データロスからクラスターを保護することを目的としています。
ノードの割り当てについてさらに詳しくElasticsearchクラスターのマスターノードは、どのシャードをどのノードに割り当てるか自動的に判断します。さらにマスターノードは、シャードを別のノードへ移動させ、クラスターの再バランス化を図るタイミングも決定します。
自動のデータ再バランス化についてさらに詳しくElasticsearchは、ニーズに応じて自在にスケールします。データの増加やユースケースの追加、リソースの不足が生じた場合も、運用クラスターにノードを追加するだけ。キャパシティと信頼性を簡単に引き上げることができます。クラスターにノードを追加すると、自動でレプリカシャードが割り当てられ、有事の際も安心です。
分散型スケーラビリティについてさらに詳しくカスタムノード属性を認識属性として使用し、シャードを割り当てる際、Elasticsearchに物理ハードウェアの設定を考慮させることができます。どのノードが同じ物理サーバー(あるいは同じラック、同じゾーン)にあるかをElasticsearch側で把握していれば、プライマリシャードとレプリカシャードを分散させ、障害発生時にすべてのシャードコピーが失われるリスクを最小化することができます。
割り当て認識についてさらに詳しくクラスター横断レプリケーション(cross-cluster replication、CCR)機能を使って、リモートクラスターのインデックスをローカルクラスターに複製することができます。一般的な運用ユースケースで広く役立ちます。
CCRについてさらに詳しく災害復旧:プライマリクラスターに障害が発生した場合、2番目のクラスターがホットバックアップとして振る舞います。
地理的近接性:ローカルな読み取りで、ネットワークレイテンシーを低減します。
Elasticsearchを使用するミッションクリティカルな多くのアプリに欠かせない要件に、データセンター横断レプリケーションがあります。従来は、部分的かつ付加的なテクノロジーで解決されていました。Elasticsearchのクラスター横断レプリケーションなら、データセンター間や、地理的冗長性を目的に、あるいはElasticsearchクラスター間のデータ複製のためにテクノジーを追加する必要はありません。
データセンター横断レプリケーションについてさらに詳しくインデックスライフサイクル管理(ILM)は、4つある各フェーズにインデックスが滞在する期間のポリシーを定義し、自動化して制御します。また、インデックスの各フェーズで実行される一連のアクションも定めます。データを保管するリソースのグレードを変えることで、運用コストのよりきめ細やかな管理を実現します。
ILMについてさらに詳しくHot:頻繁に更新、クエリが生じるフェーズ
Warm:更新はされないが、クエリが生じるフェーズ
Cold/Frozen:更新はされず、クエリが生じる頻度も乏しいフェーズ(検索は可能だが、遅い)
Delete:保持が不要なフェーズ
データティアは、ノードロール属性を使ってデータをHot、Warm、Coldの3つのノードに正式に区分する手法です。ノードロール属性に基づき、ノードのインデックスライフサイクル管理ポリシーも自動的に定義されます。Hot、Warm、Coldの3つのノードロールを割り当てることで、高コスト・高パフォーマンスなストレージから低コスト・低パフォーマンスなストレージへのデータ移動プロセスを大幅にシンプル化、および自動化できます。大切なデータインサイトには、一切影響を生じません。
データティアについてさらに詳しく- Hot:最もパフォーマンスにすぐれたインスタンスで、更新やクエリの頻度も高いティア
Warm:パフォーマンスが低めのインスタンスで、クエリの頻度も低いティア
Cold:読み取りのみ、クエリの頻度は稀で、検索可能スナップショットによりパフォーマンスを維持したままストレージ使用量を大幅削減するティア
Elasticsearchインデックスは、一部のデータ構造をメモリーに保持し、効率的に検索したり、インデックスできるよう設計されています。メモリー使用量を軽減(して運用コストを削減)するために、Elasticsearchであまり使用されないデータはフローズンインデックスに入れることができます。フローズンインデックスはメモリーに保持されていません。フローズンインデックスのデータは、クエリが生じたとき一時的にメモリーに読み込まれ、クエリの完了と同時に再び解放されます。
フローズンインデックスについてさらに詳しく管理者はバッググラウンドでスナップショットの管理を行うスナップショットライフサイクル管理(SLM)APIを使って、Elasticsearchクラスターのスナップショットを撮る間隔を定義できます。SLM専用のUIがあり、SLMポリシーの保持期間を設定したり、スナップショットを自動で作成・削除したり、スケジュールを指定できるようになっています。どのクラスターも適切にバックアップできるだけでなく、顧客とのSLAに沿って復旧を実施するために必要な頻度のバックアップを確実に実行することができます。
SLMについてさらに詳しくスナップショットとは、実行中のElasticsearchクラスターのバックアップです。個々のインデックスのスナップショットを撮ることも、クラスター全体で撮ることもでき、スナップショットは共有ファイルシステムのレポジトリに格納されます。プラグインを使用し、リモートレポジトリを選択することもできます。
スナップショットと復元についてさらに詳しく“検索可能スナップショット”は、直接クエリできるスナップショットです。通常のスナップショットを復元する場合と比べて、検索にかかる時間を劇的に短縮できます。各スナップショットインデックスの必要な部分を読み取り専用で活用し、検索リクエストを実行する仕組みです。検索可能スナップショットとColdティアを組み合わせて、Amazon S3やAzure Storage、Google Cloud Storageといったオブジェクトストレージシステムにレプリカシャードをバックアップすると、データストレージコストを大幅に削減できます。もちろん、検索のための完全なアクセスが保たれます。
検索可能スナップショットについてさらに詳しくソースレポジトリは、ソースのみのスナップショットを作成する機能です。スナップショットを最小限にすることで、最大50%のディスクスペースを節約します。ソースのみのスナップショットは格納フィールドとインデックスメタデータを含みます。インデックスやドキュメント値ストラクチャーを含まず、格納後は検索できません。
ソースのみのスナップショットについてさらに詳しく古いデータを使えるようにしておくと、分析には非常に役立ちます。問題は、膨大な量のデータのアーカイブに費用がかかることでした。したがって膨大な過去データの保持期間を、その有用性よりも、コスト面の制約で決定されることが少なくありませんでした。Elasticのロールアップは、過去データを要約して格納する機能です。分析に使えるように維持しつつ、生データにかかるストレージコストを大きく引き下げます。
ロールアップについてさらに詳しく
変換は、2次元的な表によるデータストラクチャーです。このデータストラクチャーは、インデックス済みデータをより処理しやすくする性質を備えています。変換は、アグリゲーションを通じてデータをエンティティセントリックなインデックスにピボットします。変換、要約でデータを可視化できようにするだけでなく、機械学習分析用のソースを提供するなど、別の手法によるデータ分析を可能にします。
変換についてさらに詳しくアップグレードアシスタントAPIでElasticsearchクラスターのステータスを確認・アップグレードしたり、以前のメジャーバージョンで作成されたインデックスを再インデックスしたりすることができます。Elasticsearchで、より新しいメジャーバージョンへ移行する際に便利です。
アップグレードアシスタントAPIについてさらに詳しくAPIキーの管理には、ロール別のアクセス制限機能に加えて、ユーザーが独自のキーを管理するための十分な柔軟性が必要です。ユーザーは専用UIを使ってAPIキーを作成し、Elasticsearchと通信しながら長期認証情報として使用できます。他の多くのソフトウェアでは、自動化スクリプトや自動化ワークフローの統合という形で提供されています。
APIキーの管理についてさらに詳しく適切なユーザーに適切なアクセス権限を付与する機能、それがElastic Stackのセキュリティオプションです。たとえばIT部門や事業部、アプリ開発チームごとに善意のユーザーを管理することで、不正な侵入を防ぐことができます。また、お客様や経営陣にも個別の権限を付与して、Elastic Stackのデータを安全に、安心して共有できます。
設定そのものがセンシティブである場合があります。設定値の保護をファイルシステム権限だけに頼っても、十分に安全とは言えません。このようなユースケースでは、Elasticsearchのキーストアを使ってセンシティブなクラスター設定への望ましくないアクセスを防止できます。また、キーストアにオプションのパスワード保護を追加して、セキュリティを高めることも可能です。
設定を安全に保つ仕様についてさらに詳しくSSL/TLSを用いたトラフィック暗号化や、ノード認証証明書をはじめとするテクノロジーで、Elasticsearchノードのデータに対するネットワークベースの攻撃を阻止しています。
通信の暗号化についてさらに詳しくロールベースのアクセス制御は、ユーザーやグループにロールをアサインし、さらにロールに応じた権限をアサインしてユーザーのアクセス権を設定する機能です。
RBACについてさらに詳しく
Elastic StackのSecurityオプションは、属性ベースのアクセス制御(ABAC)メカニズムも備えています。属性を使用して、検索クエリやアグリゲーションがアクセスするドキュメントを制約します。このメカニズムで、ロール定義にアクセスポリシーを導入することが可能です。エンドユーザーは、必要なすべての属性を備える特定のドキュメントしか読み取ることができません。
ABACについてさらに詳しくフィールドレベルのセキュリティ対策で、ユーザーが読み取りアクセスを持つフィールドを制限します。ドキュメントベースの読み取りAPIで、どのフィールドにアクセスを許可するか定めることが可能です。
フィールドレベルのセキュリティについてさらに詳しくドキュメントレベルのセキュリティ対策で、ユーザーが読み取りアクセスを持つドキュメントを制限します。ドキュメントベースの読み取りAPIで、どのドキュメントにアクセスを許可するか定めることが可能です。
ドキュメントレベルのセキュリティについてさらに詳しく認証の失敗や拒否された接続など、セキュリティ関連イベントを追跡する監査を有効化することができます。こうしたイベントのログを記録しておくことによって、クラスター上の疑わしいアクティビティを監視し、攻撃が発生した際のエビデンスとして使用することができます。
監査ログについてさらに詳しくクラスターに追加するノードや、アプリクライアント、ノードクライアント、トランスポートクライアントなどに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のSecurityオプションで実行されるユーザー認証は、レルムと、1つ以上のトークンに基づく認証サービスを使用します。レルムは認証トークンに基づいてユーザーを解決、認証する役割を果たします。Elastic StackのSecurityオプションで、多数の内蔵型レルムが提供されています。
セキュリティレルムについてさらに詳しくElastic StackはバックエンドサービスにElasticsearchを使用しており、KibanaへのSAMLシングルサインオン(SSO)に対応しています。SAML認証の導入で、OktaやAuth0といった外部IDプロバイダーを使ったKibanaへのログインが可能になります。
SSOについてさらに詳しくElastic Stackのセキュリティ仕様がサポートしない認証システムをお使いの場合も、カスタムレルムを作成してユーザーを認証することができます。
サードパーティセキュリティについてさらに詳しくElasticsearchのクエリ機能をフルパワーで活用するElastic Stackのアラート機能なら、データの重要な変化を見逃しません。つまり、Elasticsearchでクエリできるものは何でも通知可能です。
通知ニーズにElastic Stackを活用するメリットは、組織の規模を問いません。あらゆるソース、あらゆるフォーマットのデータを確実かつ安全にインジェストするElastic Stackが、重要なデータをリアルタイムに検索、分析、可視化。さらに、カスタムの頼れる通知をアナリストに届けます。
アラートについてさらに詳しくどのような通知方法がお好みですか?メール、IBM Resilient、Jira、Microsoft Teams、PagerDuty、ServiceNow、Slackなど、豊富な選択肢から内蔵の統合機能を選べます。またパワフルなWebフック出力が、既存の監視システムや外部システムとスムーズに連携します。
アラートの通知オプションについてさらに詳しく
Elasticsearchなら、ユーザーが「使いやすい」と感じる方法で自由にデータを扱うことができます。各種のRESTful APIや言語クライアント、堅牢なDSLを備え、SQLにも対応。あらゆる方法をスムーズに実行できる柔軟性があります。
Elasticsearchは標準のRESTful APIとJSONを使用します。さらにElasticが開発・保守するクライアントライブラリがJava、Python、.Net、SQL、PHPといった多数の言語で用意されているほか、コミュニティによるクライアントもあります。無限の可能性を持つElasticsearch。あなたの自由なアイデアを妨げません。
使用可能なクライアントプログラミング言語を探すElasticsearchはJSONベースでクエリを定義する完全なクエリDSL(ドメイン固有言語、domain-specific language)を提供しています。クエリDSLはパワフルな検索オプションとして、用語/フレーズのマッチング、あいまい検索、ワイルドカード、正規表現、ネストクエリ、ジオクエリなどを含む全文検索に対応しています。
Elasticsearch DSLについてさらに詳しくGET /_search { "query": { "match" : { "message" : { "query" : "this is a test", "operator" : "and" } } } }
Elasticsearch SQLは、ElasticsearchでリアルタイムにSQL風のクエリを実行できる機能です。クライアントはRESTインターフェース、コマンドライン、JDBCのいずれでもSQLを使用することができ、Elasticsearch内でデータ検索やアグリゲーションがネイティブに実行されます。
Elasticsearch SQLについてさらに詳しく
連続のイベントをクエリして、特定の条件に一致させる機能を備えるEvent Query Language(EQL)は、セキュリティ分析をはじめとするユースケースを目的として開発されています。
EQLについてさらに詳しくElasticsearch SQL JDBCドライバーは、豊富で包括的な仕様を備えたElasticsearchのためのJDBCドライバーです。JDBCコールをElasticsearch SQLに転換するタイプ4ドライバー(プラットフォーム非依存でスタンドアローン、データベース直結の純粋なJavaドライバー)です。
JDBCクライアントについてさらに詳しくElasticsearch SQL ODBCドライバーは、Elasticsearchのための多機能な3.80 ODBCドライバーです。コアレベルドライバーとしてElasticsearch SQL ODBC APIを通じてアクセスできるすべての機能を提供し、ODBCコールをElasticsearch SQLに変換します。
ODBCクライアントについてさらに詳しくTableau DesktopやTableau Serverのユーザーは、Elasticsearch向けTableauコネクターを使うことでElasticsearchのデータにより簡単にアクセスできます。
TableauコネクターをダウンロードドキュメントAPIを使って、個々のドキュメント上で、または複数のドキュメントを横断してCRUD操作(作成、読み取り、アップデート、削除)を実行することができます。
使用可能なドキュメントAPIを探すElasticsearchの検索APIを活用して、単なる全文検索以上の機能を実装することができます。タームやフレーズ、自動入力などの推測/提案機能の実装に役立つだけでなく、表示順位の評価や、検索でドキュメントが返された、または返されなかった理由のフィードバックを実施することもできます。
検索APIについてさらに詳しくアグリゲーションフレームワークが、検索クエリに基づいてアグリゲーション済みデータを提供します。たとえるなら、アグリゲーションと呼ばれるシンプルなブロックを用意しておき、それを組み合わせて複雑なデータのサマリーを構築する、そんな仕組みです。アグリゲーションを、一連のドキュメントから分析的な情報を取得する作業の単位としてとらえることができます。
使用可能なアグリゲーションAPIを探すメトリックアグリゲーション
バケットアグリゲーション
パイプラインアグリゲーション
マトリックスアグリゲーション
累積基数アグリゲーション
各種のインジェストAPIを使ってデータパイプラインでCRUD操作を実行したり、シミュレートパイプラインAPIを使って一連のドキュメントに対し特定のパイプラインを実行したりできます。
使用可能なインジェストAPIを探すApache Hadoop向けElasticsearch(Elasticsearch-Hadoop、ES-Hadoop)は、無料かつオープンな独立型、自己充足型の小型ライブラリです。ES-Hadoopを使うと、HadoopジョブでElasticsearchを操作することができます。Hadoopデータに役立つダイナミックな検索アプリケーションを手軽に構築したり、全文検索や、地理空間情報検索、アグリゲーション機能を使った深く遅延の少ない分析を実行したりできます。
ES-Hadoopについてさらに詳しくElasticsearch for Apache Hadoopは、Apache Hiveを全面的にサポートしています。Apache Hiveは、手軽なデータ要約、アドホッククエリ、Hadoop互換ファイルシステムに格納された大規模データセットの分析を実施するHadoop向けウェアハウスシステムです。
Apache Hiveの統合についてさらに詳しくElasticsearch for Apache Hadoopは、Apache Pigを全面的にサポートしています。Apache Pigは、高水準言語で表現されたデータ分析プログラムと、各種プログラムを評価するインフラの組み合わせで構成される、大規模データセットの分析プラットフォームです。
Apache Pigの統合についてさらに詳しくElasticsearch for Apache Hadoopは、高速な汎用クラスターコンピューティングシステムのApache Sparkを全面的にサポートしています。Java、Scala、Pythonの高レベルAPIと、一般的な実行グラフをサポートする最適化エンジンを提供します。
Apache Sparkの統合についてさらに詳しくElasticsearch for Apache Hadoopは、無償でオープンソースのリアルタイム分散コンピューティングシステム、Apache Stormを全面的にサポートしています。Hadoopのバッチ処理と同じ動作をリアルタイム処理で実行するStormは、膨大なデータストリームを確実かつ、手軽に処理します。
Apache Stormの統合についてさらに詳しくJDBC/ODBCインターフェースを使えば、さまざまなサードパーティ製BIアプリでElasticsearch SQLの機能を活用することができます。
使用可能なBIとSQL統合についてさらに詳しく無料かつオープンで言語不問。プラグインと統合を使って、Elasticsearchの機能性を手軽に拡張することができます。プラグインは、ユーザーがカスタマイズした方法でElasticsearchのコア機能を拡張します。統合は、Elasticsearchを使いやすくする外部ツールやモジュールのことです。
使用可能なElasticsearchプラグインを探すAPI機能拡張プラグイン
Alertingプラグイン
分析プラグイン
ディスカバリープラグイン
投入プラグイン
管理プラグイン
マッパープラグイン
Securityプラグイン
スナップショット/レポジトリ復元プラグイン
格納プラグイン
とにかく簡単にはじめることができます。ElasticsearchとKibanaをダウンロードして、アーカイブやパッケージマネージャーからインストールするだけ。データをインデックスして、分析と可視化をすぐに実行できます。機械学習やセキュリティ、Graph分析などの有償オプション(プラチナ)はデフォルトの配布に含まれており、30日間無料でお試しいただけます。
Elastic Stackをダウンロード進化を続けるクラウドSaaSファミリーのElastic Cloudなら、Elasticプロダクトを手軽にデプロイ、運用、スケールできます。使いやすいマネージドのElasticsearchエクスペリエンスとして、またパワフルですぐに開始できる検索ソリューションとして、Elastic CloudはElasticプロダクトをシームレスに導入する出発点となります。Elastic Cloudのすべてのプロダクトを14日間無料でお試しください。クレジットカードの登録は必要ありません。
Elastic Cloudを使いはじめるElasticsearch Serviceの無料トライアルをはじめる
Elastic Cloud Enterprise(ECE)は規模や環境を問わず、ひとつのコンソールでElasticsearch、Kibana、オプションをプロビジョニング、管理、監視します。Elasticsearch、Kibana、各種オプションを、ベアメタルサーバー、仮想環境、プライベートクラウド、またはパブリッククラウド(Google、Azure、AWSなど)ほか、お好きな環境に展開できます。
30日間の無料トライアルでECEをお試しくださいKubernetes Operatorに基づいて開発されたElastic Cloud on Kubernetes(ECK)は、Kubernetesの基本的なオーケストレーション機能を拡張することにより、KubernetesでのElasticsearchやKibanaの設定/管理をサポートします。Elastic Cloud on Kubernetesを使うと、KubernetesでElasticsearchを実行するためのデプロイ、アップグレード、バックアップ、スケール、高可用性、セキュリティなどのプロセスをシンプル化することができます。
Elastic Cloud on KubernetesでデプロイDocker Hubのオフィシャルなコンテナーを使って、ElasticsearchやKibanaをDocker上で実行できます。
DockerでElastic Stackを実行するあらゆる方法でデータをElastic Stackに入れることができます。RESTful APIを使えるほか、クライアントプログラミング言語各種、投入ノード、軽量なシッパー、あるいはLogstashを使うことも可能。サポート言語リストに拘束されることがありません。オープンソースだから、投入するデータタイプにも制限はありません。特定のデータタイプをシッピングする必要がある場合も、カスタムの投入メソッドの構築に必要となるライブラリと手順が揃っています。成果をコミュニティにシェアすることもできます。同じメソッドを必要とする人のために、公開することが可能です。
Elasticsearchは標準のRESTful APIとJSONを使用します。さらにElasticが開発・保守するクライアントライブラリがJava、Python、.Net、SQL、PHPといった多数の言語で用意されているほか、コミュニティによるクライアントもあります。無限の可能性を持つElasticsearch。あなたの自由なアイデアを妨げません。
使用可能なクライアントプログラミング言語とAPIを探すElasticsearchが提供する多彩なノードタイプの1つに、データ投入専用のノードがあります。Ingestノードは1つ以上の投入プロセッサーで構成されたパイプラインの事前処理を実行することができます。投入プロセッサーの動作タイプと必要なリソースにより、特定のタスクのみ実行する投入専用ノードを使う方がよい場合があります。
Ingestノードについてさらに詳しくBeatsは、エージェントとしてサーバーにインストールできるオープンソースのデータシッパー。運用に関するデータをElasticsearchやLogstashに送ります。一般的なログやメトリック、その他さまざまなタイプのデータを捉えることができます。
Beatsについてさらに詳しくLinux監査ログ用Auditbeat
ログファイル用Filebeat
クラウドデータ用Functionbeat
アベイラビリティデータ用Heartbeat
システムジャーナル用Journalbeat
インフラメトリック用Metricbeat
ネットワークトラフィック用Packetbeat
Windowsイベントログ向けWinlogbeat
Logstashは、リアルタイムでパイプライン処理に対応するオープンソースのデータ収集エンジンです。Logstashは異なるソースから動的にデータを集め、正規化して指定の送信先に届けます。あらゆるデータをクレンジングし、アクセシブルになるよう整形。下流工程にある高度な分析や可視化など、幅広いユースケースで使えるデータにします。
Logstashについてさらに詳しくユースケースに解決を必要する具体的な課題がある場合、コミュニティBeatの活用をおすすめしています。Elasticは、そのプロセスをシンプル化するインフラを用意しました。libbeatライブラリにすべてGoで記述されているAPIが提供されています。どのBeatsでも、このAPIを使用してElasticsearchにデータをシッピングしたり、入力オプションの設定や、ロギングの実装などを行うことができます。
Beats開発者向けガイドはこちらBeatsへのコントリビューションを行うコミュニティは100以上。Cloudwatchログおよびメトリックや、GitHubアクティビティ、Kafkaに関するトピックスからMySQL、MongoDB Prometheus、Apache、Twitterまで、さまざまなエージェントがあります。
コミュニティが開発したBeatsを探すアナライザーやトークナイザー、フィルター、エンリッチメントをはじめ、各種オプションが豊富に揃うElasticsearchなら、生データから貴重な情報を引き出せます。
Elastic Common Schema(ECS)を使って、多様なソースからくるデータを一元的に分析できます。検知ルール、機械学習ジョブ、ダッシュボード、その他のセキュリティコンテンツを幅広いデータに適用できるだけでなく、検索範囲を精緻に絞り込むことができ、フィールド名も覚えやすくなります。
Elastic Common Schemaに関するビデオを視聴する
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にピボットする必要がなく、Ingestパイプラインだけで処理することが可能になります。また一致エンリッチプロセッサーによるデータの正規化は、高度な分析や一般的なクエリにも役立ちます。
一致エンリッチプロセッサーについてさらに詳しく地理空間一致エンリッチプロセッサーは、地理データを活用して検索とアグリゲーションの機能性を高めます。クエリやアグリゲーションを地理座標で定義する必要がありません。一致エンリッチプロセッサーと同様に、投入時にデータを参照して、エンリッチ済みデータをプルする最適なインデックスを判断することができます。
地理空間一致エンリッチプロセッサーについてさらに詳しくElastic Stackは、あらゆるユースケースに対応するパワフルなソリューションです。中核となる高度な検索機能のほか、ドキュメントストレージにも、時系列分析やメトリック分析、地理空間分析のための最適なツールにもなります。多様なニーズに応えるフレキシブルな設計です。
Elasticsearchは、ドキュメントのフィールドについてさまざまなデータタイプをサポートしています。また、各データタイプについて複数のサブタイプも提供しています。それが、種類を問わず、データを可能な限り効率的かつ効果的に格納、分析、活用できる理由です。Elasticsearchで最適に扱うことができるデータタイプに、次のようなものがあります。
Elasticsearchがサポートするデータタイプテキスト
シェイプ
数
ベクター
Histogram
日時/時系列
フラット化されたフィールド
地理座標/ジオシェイプ
非構造化データ(JSON)
構造化データ
Elasticsearchは、超高速の全文検索を実現する目的で開発された倒置インデックスと呼ばれる構造を使用します。倒置インデックスは、ドキュメントに出現するユニークなすべての単語を列挙したリストと、各単語がどのドキュメントに出現するかを列挙したリストで構成されます。倒置インデックスを作成する際、はじめに各ドキュメントのコンテンツフィールドを単語(ターム、またはトークンと呼ばれます)に分割します。次に、ユニークなすべての単語を列挙し、並べ替えたリストを作成します。最後に、各タームが出現するドキュメントをリストアップします。
倒置インデックスについてさらに詳しくElasticsearchは、構造化をデータ投入や分析の要件としていません(構造化されていれば、スピードが向上します)。シンプルに使いはじめることができる設計で、ドキュメントストアとしても効率的です。ElasticsearchはNoSQLデータベースではありませんが、類似の機能性を備えています。
動的マッピングについてさらに詳しく転置インデックスでクエリを実行すると、検索タームをすばやく参照できます。しかし、並べ替えやアグリゲーションを実行するには、別のデータアクセスパターンが必要です。タームを参照してドキュメントを見つける代わりに、ドキュメントを参照してフィールドにあるタームを探せるようにしなければなりません。ドキュメントの値は、インデックス時にElasticsearchのオンディスクデータ構造になっています。そのため前述のデータアクセスパターンを使うことができ、検索を列で実行することが可能です。Elasticsearchが時系列とメトリック分析にすぐれた能力を発揮できる理由もここにあります。
ドキュメント値についてさらに詳しくフィールドレベルのセキュリティ対策で、ユーザーが読み取りアクセスを持つフィールドを制限します。ドキュメントベースの読み取りAPIで、どのフィールドにアクセスを許可するか定めることが可能です。
フィールドレベルのセキュリティについてさらに詳しくドキュメントレベルのセキュリティ対策で、ユーザーが読み取りアクセスを持つドキュメントを制限します。ドキュメントベースの読み取りAPIで、どのドキュメントにアクセスを許可するか定めることが可能です。
ドキュメントレベルのセキュリティについてさらに詳しくクラスターとは、共同ですべてのデータを保有し、全ノードを横断してフェデレーションによるインデキシングと検索を提供する1つ以上のノード(サーバー)の集合です。このアーキテクチャーでは、簡単に水平方向へのスケールを行うことができます。Elasticsearchはクラスター管理のための包括的でパワフルなREST APIとUIを提供しています。
クラスター化インデックスについてさらに詳しくスナップショットとは、実行中のElasticsearchクラスターのバックアップです。個々のインデックスのスナップショットを撮ることも、クラスター全体で撮ることもでき、スナップショットは共有ファイルシステムのレポジトリに格納されます。プラグインを使用し、リモートレポジトリを選択することもできます。
スナップショットと復元についてさらに詳しくソースレポジトリは、ソースのみのスナップショットを作成する機能です。スナップショットを最小限にすることで、最大50%のディスクスペースを節約します。ソースのみのスナップショットは格納フィールドとインデックスメタデータを含みます。インデックスやドキュメント値ストラクチャーを含まず、格納後は検索できません。
ソースのみのスナップショットについてさらに詳しく古いデータを使えるようにしておくと、分析には非常に役立ちます。問題は、膨大な量のデータのアーカイブに費用がかかることでした。したがって膨大な過去データの保持期間を、その有用性よりも、コスト面の制約で決定されることが少なくありませんでした。Elasticのロールアップは、過去データを要約して格納する機能です。分析に使えるように維持しつつ、生データにかかるストレージコストを大きく引き下げます。
ロールアップについてさらに詳しく
Elasticsearchは、パワフルな全文検索機能で広く知られています。中核となる転置インデックスが高速処理を実現し、調整可能な関連性スコアリングや高度なクエリDSL、幅広い検索拡張など、機能性にすぐれています。
Elasticsearchは、超高速の全文検索を実現する目的で開発された倒置インデックスと呼ばれる構造を使用します。倒置インデックスは、ドキュメントに出現するユニークなすべての単語を列挙したリストと、各単語がどのドキュメントに出現するかを列挙したリストで構成されます。倒置インデックスを作成する際、はじめに各ドキュメントのコンテンツフィールドを単語(ターム、またはトークンと呼ばれます)に分割します。次に、ユニークなすべての単語を列挙し、並べ替えたリストを作成します。最後に、各タームが出現するドキュメントをリストアップします。
倒置インデックスについてさらに詳しくA runtime field is a field that is evaluated at query time (schema on read). Runtime fields can be introduced or modified at any time, including after the documents have been indexed, and can be defined as part of a query. Runtime fields are exposed to queries with the same interface as indexed fields, so a field can be a runtime field in some indices of a data stream and an indexed field in other indices of that data stream, and queries need not be aware of that. While indexed fields provide optimal query performance, runtime fields complement them by introducing flexibility to change the data structure after the documents have been indexed.
Learn about runtime fieldsクラスター横断検索(cross-cluster search、CCS)で、ノードを複数のクラスターを横断する連携クライアントのように実行させることができます。クラスター横断検索ノードは、リモートクラスターに直接は加わりません。ほとんど負荷をかけずにリモートクラスターへ接続し、連携された検索リクエストを実行します。
CCSについてさらに詳しくマッチするドキュメントのスコアを定義するのが類似度(関連性スコアリング/順位付けモデル)です。デフォルトで、ElasticsearchはBM25類似度を使用します。これはTF/IDFベースの高度な類似度で、(名前など)短いフィールドに最適なtf正規化に内蔵されています。さらにこの他にも、多数の類似度オプションを使用することができます。
類似度モデルについてさらに詳しく全文検索を実行するには、頼れるクエリ言語が必要です。ElasticsearchはJSONベースでクエリを定義する完全なクエリDSL(ドメイン固有言語、domain-specific language)を提供しています。シンプルなクエリでタームやフレーズをマッチさせることができ、複数のクエリの組み合わせに対応する複合クエリを開発することも可能です。クエリ時にフィルターを適用して、関連性スコアの算出前にドキュメントを除外することもできます。
ElasticsearchクエリDSLについてさらに詳しく強調表示機能は、検索結果から1つ以上のフィールドの文字列をハイライトします。クエリがマッチしている箇所が一目でわかります。強調表示をリクエストすると、レスポンスに強調表示要素が追加され、強調表示されたフィールドとフラグメントを含む検索ヒット部分を示します。
強調表示についてさらに詳しく入力予測により、自動入力機能や、入力と同時に検索結果を表示するエクスペリエンスが提供されています。エンドユーザーの入力と同時に関連性の高い結果へ導くナビゲーターとなり、検索精度も高くなります。
自動入力についてさらに詳しく検索中に「もしかして~ですか?」と提案する、フレーズの入力予測機能を追加できます。ngram言語モデルに基づいて重み付けされた個別のトークンは使用しません。用語の入力予測機能に付加的なロジックを構築することにより、完全に修正されたフレーズを選択します。この入力予測機能は、共起性と頻度に基づいて取り上げるトークンを決定にすぐれた能力を発揮します。
入力予測についてさらに詳しく編集スペルチェックは、編集距離からタームを提案する予測機能を応用しています。提案されるテキストはあらかじめ分析されており、提案されるタームは、分析されたテキストトークンごとに出力されます。
修正についてさらに詳しくクエリを使ってインデックスに格納されたドキュメントを探す、というのが標準的な検索モデルです。それとは対照的に、パーコレーターを使ってインデックスに格納されたクエリにドキュメントをマッチさせることができます。パーコレート
クエリは一部にドキュメントを含んでおり、そのドキュメントをインデックスに格納されたクエリとマッチさせるために使用します。
プロファイルAPIは、検索リクエストを実行中する個々のコンポーネントのタイミングについて詳しい情報を提供します。行レベルで検索リクエストがどのように実行されたかのインサイトを入手できることで、特定のリクエストが遅延した理由を把握したり、改善措置を講じることができます。
プロファイルAPIについてさらに詳しくフィールドレベルのセキュリティとドキュメントレベルのセキュリティを備え、エンドユーザーの検索において、読み取りアクセスのある範囲の結果だけを表示します。具体的には、ドキュメントベースの読み取りAPIからアクセスできるフィールドとドキュメントを制限します。
アナライザーリロードAPIを使って、同義語の定義の再読み込みを開始することができます。設定済みの同義語ファイルに含まれるコンテンツを再読み込みし、フィルターが使用する同義語の定義を更新します。_reload_search_analyzers APIは1つ以上のインデックスで実行することができ、設定済みのファイルに含まれる同義語の再読み込みをトリガーします。
アナライザーリロードAPIについてさらに詳しくドキュメントを指定して、クエリに一致する結果の中で優先度を上げることができます。ある検索で"オーガニック"に返される結果に比べ、精選されたドキュメントを優先させて検索ユーザーをガイドする目的などに使うことができます。優先された("ピン留め")されたドキュメントは、_idフィールドに格納されるドキュメントIDを使って特定することができます。
結果のピン留めについてさらに詳しく検索は「最初の一歩」です。Elasticsearchのパワフルな分析機能を使って、欲しいデータを入手したり、より深い意味を見出してみましょう。アグリゲーション結果の表示や、ドキュメント間の関連性分析、閾値ベースのアラート設定といった高度な作業も、土台となるパワフルな検索のおかげで簡単に行えます。
アグリゲーションフレームワークが、検索クエリに基づいてアグリゲーション済みデータを提供します。たとえるなら、アグリゲーションと呼ばれるシンプルなブロックを用意しておき、それを組み合わせて複雑なデータのサマリーを構築する、そんな仕組みです。アグリゲーションを、一連のドキュメントから分析的な情報を取得する作業の単位としてとらえることができます。
アグリゲーションについてさらに詳しくメトリックアグリゲーション
バケットアグリゲーション
パイプラインアグリゲーション
マトリックスアグリゲーション
Graph探索APIを使って、Elasticsearchインデックス中のドキュメントや用語に関する情報を抽出/要約することができます。Graph探索APIについて理解するベストな方法は、KibanaでGraphを使った関係性の探索を行ってみることです。
Graph探索APIについてさらに詳しく
Elasticの機械学習は、トレンドや周期性などからデータの振る舞いを自動的に、リアルタイムにモデル化し、すばやく問題を特定して原因分析を手助けします。さらに、誤検出を防ぎます。
ElasticのMachine Learningは、データの正常な振る舞いのベースラインを作成します。この情報を活用すれば、未来の振る舞いを予測することもできます。未来の特定の日時の数値を予測する、あるいは時系列中の値が未来に再び発生する可能性を見積もる、といった使い方が可能です。
未来予測についてさらに詳しく
ElasticのMachine Learningオプションは、データの正常な振る舞いの正確なベースラインを作成し、異常なパターンを特定することによって時系列データ分析を自動化します。異常が検知され、スコア付けされるだけではありません。Machine Learningの専有アルゴリズムを使用してデータ中の顕著なインフルエンサーへのリンク付けまで実行します。
異常検知についてさらに詳しく数値や回数、頻度における一時的な偏差に関連する異常
統計的稀出性
データ母集団における稀な振る舞い
アラートに教師なしの機械学習を組み合わせて、ルールや閾値の定義が難しい異常を検知しましょう。アラートフレームワークの異常スコアを活用し、問題が発生した場合に通知を受け取ることができます。
推定により、リグレッションや分類などの教師あり機械学習プロセスをバッチ分析だけでなく、連続的に実行することができます。教育済み機械学習モデルを流入データに使えるのも、推定のおかげです。
推定についてさらに詳しく