すべてのプロダクト
Search
ドキュメントセンター

Elasticsearch:analytic-search プラグインの使用

最終更新日:Jan 11, 2025

analytic-search は、Alibaba Cloud Elasticsearch チームによって開発されたログクエリプラグインです。 analytic-search プラグインは、Elasticsearch クラスターの Kibana コンソールの Discover ページで特定の検索条件に基づくクエリを高速化するために使用される time フィールド index.sort をサポートしています。 analytic-search プラグインは、同時クエリ機能も提供します。 このプラグインは、データのクエリに必要な時間を大幅に短縮するのに役立ちます。 このトピックでは、analytic-search プラグインの使用方法について説明します。

背景情報

次の説明では、analytic-search プラグインでサポートされている機能、機能を使用できるシナリオ、および機能に対して実行されたパフォーマンステストに関する情報を示します。

Kibana コンソールの Discover ページで実行されるクエリの高速化機能

  • ユースケース:この機能は、ログクエリのシナリオに適しています。 たとえば、analytic-search プラグインを使用して、Kibana コンソールの Discover ページで無条件クエリと単一条件クエリを高速化できます。
  • メリット:インデックスのマージポリシーと日付ヒストグラムの集計ポリシーが最適化されています。 これにより、ログクエリシナリオでの無条件クエリと単一条件クエリのパフォーマンスが大幅に向上します。 毎日 1 TB を超えるデータが追加されるシナリオでは、クエリを完了するために必要な時間が数分から 5 秒以下に短縮されます。
  • パフォーマンステスト:
    • テスト環境
      • ノード:10 ノード。各ノードは 16 個の vCPU と 64 GiB のメモリを提供します。
      • データセット:毎日 600 億ドキュメントのビジネスログデータ。 データは 12 個のインデックスに格納され、各インデックスには 60 個のシャードが構成されています。
    • 次の表は、Kibana コンソールの Discover ページで実行されるクエリの高速化機能を有効にした後、さまざまなストレージメディアからデータをクエリするために必要な時間が短縮される割合を示しています。
      クエリタイプ標準 SSDUltra DiskOpenStore
      無条件クエリ96% 削減95% 削減94% 削減
      単一条件クエリ88% 削減77% 削減85% 削減
      複数条件クエリ8% 削減11% 削減14% 削減

同時クエリ機能

  • ユースケース:この機能は、1 秒あたりのクエリ数(QPS)が少なく、クエリ結果の返却に時間がかかり、ノードの計算リソースが十分にあるシナリオに適しています。
  • メリット:同時スレッドを使用してクエリ結果を返すことができ、クエリ結果を返すのに必要な平均時間が 50% 短縮されます。 リソース使用率が向上します。
  • パフォーマンステスト:
    • テスト環境
      • ノード:OpenStore が提供する 3 つのウォームホット共有コンピューティングノード。各ノードは 16 個の vCPU と 64 GiB のメモリを提供します。
        説明 OpenStore が提供するウォームホット共有コンピューティングノードは、Alibaba Cloud 中国サイト(aliyun.com)でのみ Elasticsearch コンソールで購入できます。
      • データセット:1.6 TB のビジネスログデータ。 データは、60 個のシャードが構成されたインデックスに 60 億ドキュメントとして格納されます。
      • クエリ:3 TermQuery(and) + TimeRange + Sort + Datehistogram。 1 つのシャードから 1,000 万ドキュメントを 10% のヒット率でクエリできます。
    • テスト結果:
      • 単一シャードからデータをクエリするために必要な時間が 65% 短縮されます。
      • 複数シャードからデータをクエリするために必要な時間が 53% 短縮されます。

前提条件

Alibaba Cloud Elasticsearch V7.10.0 クラスターが作成されます。 クラスターのカーネルバージョンは V1.7.0 以降です。 この例では、Alibaba Cloud Elasticsearch V7.10.0 クラスターを使用します。 Alibaba Cloud Elasticsearch クラスターの作成方法については、Alibaba Cloud Elasticsearch クラスターの作成を参照してください。
説明 デフォルトでは、analytic-search プラグインがインストールされており、削除できません。 プラグインの詳細については、プラグインの概要を参照してください。

Kibana コンソールの Discover ページで実行されるクエリの高速化機能を有効にする

Kibana コンソールの Discover ページで実行されるクエリの高速化機能を有効にするには、インデックスを作成するときに settings フィールドと mappings フィールドに次の構成を追加します。
説明 次のサンプルコードは参照用にのみ提供されています。 実際のビジネスシナリオでは、ビジネス要件に基づいて、インデックスのソートに使用するフィールドと各フィールドのソート順を指定する必要があります。
{
  "settings": {
    "index.points.same_sort_order_as_index_sort": true,
    "index.sort.field": [
      "@timestamp"
    ],
    "index.sort.order": [
      "desc"
    ]
  },
  "mappings": {
    "properties": {
      "@timestamp": {
        "type": "date"
      }
    }
  }
}

同時クエリ機能を使用する

  1. Elasticsearch クラスターの Kibana コンソールにログインし、プロンプトに従って Kibana コンソールのホームページに移動します。

    Kibana コンソールへのログイン方法の詳細については、「Kibana コンソールへのログイン」を参照してください。

    説明

    この例では、Elasticsearch V7.10.0 クラスターを使用します。 他のバージョンのクラスターでの操作は異なる場合があります。 コンソールでの実際の操作が優先されます。

  2. 表示されるページの右上隅にある [dev Tools] をクリックします。

  3. [console] タブで、次のコマンドを実行して同時クエリ機能を有効にします。
    PUT _cluster/settings
    {
      "persistent": {
        "apack.analytic_search.doc_concurrency.enabled": "true"  // 同時クエリ機能を有効にするかどうかを指定します。
      }
    }
    上記のコマンドが正常に実行されると、Elasticsearch クラスターによって受信されたリクエストは、同時クエリ機能のデフォルト設定に基づいて処理されます。 同時クエリ操作を制御するために、同時クエリ機能に関連する構成を変更できます。 次の表に、構成可能なパラメーターを示します。
    • クラスターレベルの構成
      パラメーターデフォルト値説明
      apack.analytic_search.doc_concurrency.enabledfalse同時クエリ機能を有効にするかどうかを指定します。 有効な値:
      • true:同時クエリ機能を有効にします。
      • false:同時クエリ機能を無効にします。
      apack.analytic_search.doc_concurrency.concurrent.policy80%:4;90%:2クエリ同時実行ポリシー。 このパラメーターは、Threshold 1:Concurrency 1;Threshold 2:Concurrency 2;... 形式で構成する必要があります。

      Threshold n は、ノードの CPU 使用率のしきい値を表します。 Concurrency n は、ノードの CPU 使用率が Threshold n の値未満の場合にクエリに使用される同時スレッド数を表します。 たとえば、値 80%:4;90%:2 は、ノードの CPU 使用率が 80% 未満の場合は 4 つの同時スレッドがクエリに使用され、ノードの CPU 使用率が 90% 未満の場合は 2 つの同時スレッドがクエリに使用されることを示します。 ノードの CPU 使用率が 90% 以上の場合、クエリには 1 つのスレッドのみが使用されます。

      apack.analytic_search.doc_concurrency.min_support_doc10000同時クエリ機能が有効になるインデックス内のドキュメントの最小数。 インデックス内のドキュメント数が下限より少ない場合、同時クエリ機能はインデックスに影響しません。
      apack.analytic_search.doc_concurrency.min_support_processors4同時クエリ機能が有効になるノードに構成されている vCPU の最小数。 ノードに構成されている vCPU の数が下限より少ない場合、同時クエリ機能はノードに影響しません。
      apack.analytic_search.doc_concurrency.max_support_heap_usage80%同時クエリ機能が有効になるノードの Java 仮想マシン(JVM)ヒープメモリの最大使用量。 ノードの JVM ヒープメモリ使用量が上限を超えると、同時クエリ機能はノードに影響しません。
      apack.analytic_search.doc_concurrency.max_support_cpu_usage90%同時クエリ機能が有効になるノードの最大 CPU 使用率。 ノードの CPU 使用率が上限を超えると、同時クエリ機能はノードに影響しません。
    • インデックスレベルの構成
      パラメーターデフォルト値説明
      index.apack.analytic_search.doc_concurrency.enabledtrue同時クエリ機能を有効にするかどうかを指定します。 有効な値:
      • true:同時クエリ機能を有効にします。
      • false:同時クエリ機能を無効にします。
      index.apack.analytic_search.doc_concurrency.allow_no_aggfalse集計クエリ以外のクエリに対して同時クエリ機能を有効にするかどうかを指定します。
      • true:集計クエリ以外のクエリに対して同時クエリ機能を有効にします。
      • false:集計クエリ以外のクエリに対して同時クエリ機能を無効にします。