データの検索と分析

Elasticsearchを基本的なドキュメントストアとして使用して、ドキュメントとそのメタデータを取得できます。しかし、Elasticsearchの真の力は、その高度な検索および分析機能にあります。

APIエンドポイントとクエリ言語の組み合わせを使用して、データと対話します。

REST API

REST APIを使用して、Elasticsearchクラスターを管理し、データをインデックス化および検索します。テスト目的で、コマンドラインから直接リクエストを送信するか、KibanaのDev Tools Consoleを通じて送信できます。アプリケーションからは、選択したプログラミング言語でクライアントを使用できます。

[_search]エンドポイントを使用して、Elasticsearchにデータを追加し、Query DSL構文で基本的な検索を実行する実践的な例については、Elasticsearchの最初のステップを参照してください。

クエリ言語

Elasticsearchは、データと対話するためのいくつかのクエリ言語を提供しています。

Query DSLは、現在のElasticsearchの主要なクエリ言語です。

ES|QLは、新しいパイプラインクエリ言語および計算エンジンで、バージョン8.11で初めて追加されました。

ES|QLは、フルテキスト検索やセマンティック検索など、Query DSLのすべての機能をまだサポートしていません。各リリースで新しいES|QLの機能と機能を楽しみにしてください。

Elasticsearchで利用可能なクエリ言語の完全な概要については、クエリ言語を参照してください。

Query DSL

Query DSLは、複雑な検索、フィルタリング、および集計を可能にするフル機能のJSONスタイルのクエリ言語です。これは、現在のElasticsearchの元の最も強力なクエリ言語です。

[_search]エンドポイントは、Query DSL構文で書かれたクエリを受け入れます。

Query DSLを使用した検索とフィルタリング

Query DSLは、以下を含む幅広い検索技術をサポートしています:

  • フルテキスト検索:フレーズまたは近接クエリ、ファジーマッチなどをサポートするために分析およびインデックス化されたテキストを検索します。
  • キーワード検索keywordフィールドを使用して正確な一致を検索します。
  • セマンティック検索:Elasticsearchクラスターで生成された埋め込みに対して、密なまたは疎なベクトル検索を使用してsemantic_textフィールドを検索します。
  • ベクトル検索:Elasticsearchの外部で生成された埋め込みに対してkNNアルゴリズムを使用して類似の密なベクトルを検索します。
  • 地理空間検索:地理空間クエリを使用して、場所を検索し、空間関係を計算します。

Query DSLがサポートするクエリの全範囲について学びます。

Query DSLを使用してデータをフィルタリングすることもできます。フィルターを使用すると、特定のフィールドレベルの基準に一致するドキュメントを取得することによって、ドキュメントを含めたり除外したりできます。filterパラメータを使用するクエリは、フィルターコンテキストを示します。

Query DSLを使用した分析

集計は、Query DSLを使用してElasticsearchデータを分析するための主要なツールです。集計を使用すると、データの複雑な要約を構築し、主要なメトリック、パターン、およびトレンドに関する洞察を得ることができます。

集計は検索に使用されるのと同じデータ構造を活用するため、非常に高速です。これにより、リアルタイムでデータを分析および視覚化できます。ドキュメントを検索し、結果をフィルタリングし、同時に同じデータに対して分析を実行できます。つまり、集計は検索クエリのコンテキストで計算されます。

以下の集計タイプが利用可能です:

  • メトリック:フィールド値から合計や平均などのメトリックを計算します。
  • バケット:フィールド値、範囲、またはその他の基準に基づいてドキュメントをバケットにグループ化します。
  • パイプライン:他の集計の結果に対して集計を実行します。

search APIaggsパラメータを指定して集計を実行します。 集計の実行で詳細を学びます。

ES|QL

Elasticsearch Query Language (ES|QL)は、データをフィルタリング、変換、および分析するためのパイプラインクエリ言語です。ES|QLは新しい計算エンジンの上に構築されており、検索、集計、および変換機能がElasticsearch自体内で直接実行されます。ES|QL構文は、さまざまなKibanaツール内でも使用できます。

[_query]エンドポイントは、ES|QL構文で書かれたクエリを受け入れます。

現在、集計、フィルター、および変換など、Query DSLで利用可能な機能のサブセットをサポートしています。フルテキスト検索やセマンティック検索はまだサポートされていません。

データを操作するための包括的な関数と演算子のセットが付属しており、KibanaのDiscover、ダッシュボード、視覚化との強力な統合があります。

ES|QLの始め方で詳細を学ぶか、トレーニングコースを試してください。

利用可能なクエリ言語の一覧

以下の表は、利用可能なすべてのElasticsearchクエリ言語を要約しており、ユースケースに最適なものを選択するのに役立ちます。

名前 説明 ユースケース APIエンドポイント
Query DSL Elasticsearchの主要なクエリ言語。複雑なクエリを可能にする強力で柔軟なJSONスタイルの言語。 フルテキスト検索、セマンティック検索、キーワード検索、フィルタリング、集計など。 _search
ES/QL 8.11で導入されたElasticsearch Query Language (ES/QL)は、データをフィルタリング、変換、および分析するためのパイプラインクエリ言語です。 初めはログやメトリックなどの時系列データの操作に特化しています。

Kibanaとの強力な統合により、データのクエリ、視覚化、分析が可能です。
フルテキスト検索はまだサポートされていません。 | _query |
| EQL | イベントクエリ言語 (EQL) は、イベントベースの時系列データのためのクエリ言語です。データにはEQLを使用するために@timestampフィールドが含まれている必要があります。 | 脅威ハンティングのセキュリティユースケースのために設計されています。 | _eql |
| Elasticsearch SQL | Elasticsearchデータに対してネイティブでリアルタイムのSQLライクなクエリを可能にします。ビジネスインテリジェンス (BI) ツールとの統合のためにJDBCおよびODBCドライバーが利用可能です。 | SQLに慣れたユーザーが、BIおよびレポートのために親しみのある構文を使用してElasticsearchデータをクエリできるようにします。 | _sql |
| Kibana Query Language (KQL) | Kibana Query Language (KQL)は、Kibana UIを通じてデータにアクセスする際のフィルタリングのためのテキストベースのクエリ言語です。 | KQLを使用して、フィールドの値が存在する、特定の値に一致する、または特定の範囲内にあるドキュメントをフィルタリングします。 | N/A |