Alibaba Cloud Elasticsearch チームが開発した analytic-search プラグインは、ログの検索と分析のためのプラグインです。このプラグインは、Kibana Discover のクエリ高速化と同時クエリという 2 つの機能を提供します。
注意事項
analytic-search プラグインは、アンインストールできないプリインストール済みのシステムプラグインです。プラグイン設定ページで確認できます。このプラグインを使用するには、ご利用の Alibaba Cloud Elasticsearch クラスターのバージョンが 7.10.0 以降、カーネルバージョンが 1.7.0 以降である必要があります。
Kibana Discover のクエリ高速化
この機能は、インデックスマージ戦略と Date_histogram 実行計画を最適化することで、条件がない、または単一の条件を持つクエリのレイテンシーを削減します。Kibana Discover でのログ検索に最適です。
パフォーマンスベンチマーク
テスト環境:10 ノード、各ノードは 16 vCPU と 64 GB のメモリを搭載。データセットには、1 日あたり 600 億件のビジネスログドキュメントが含まれ、それぞれ 60 シャードを持つ 12 のインデックスに分散されています。
クエリ条件 | 標準 SSD | ウルトラディスク | OpenStore |
条件なし | レイテンシーが 96% 削減 | レイテンシーが 95% 削減 | レイテンシーが 94% 削減 |
単一条件 | レイテンシーが 88% 削減 | レイテンシーが 77% 削減 | レイテンシーが 85% 削減 |
複数条件 | レイテンシーが 8% 削減 | レイテンシーが 11% 削減 | レイテンシーが 14% 削減 |
Kibana Discover のクエリ高速化の有効化
この機能を有効にするには、インデックスの `index.sort` 設定を構成し、タイムスタンプフィールドで降順にソートします。次の例では、フィールド名として `@timestamp` を使用しています。ご利用のデータに合わせて、フィールド名とソート順を調整してください。
PUT test_log
{
"settings": {
"index.points.same_sort_order_as_index_sort": true,
"index.sort.field": [
"@timestamp"
],
"index.sort.order": [
"desc"
]
},
"mappings": {
"properties": {
"@timestamp": {
"type": "date"
}
}
}
}同時クエリ
この機能は、クエリリコールフェーズを並列で実行することで、リソース使用率を向上させ、平均レイテンシーを 50% 削減します。QPS が低く、リコールレイテンシーが高く、ノードのコンピューティングリソースが十分にあるシナリオに最適です。
パフォーマンスベンチマーク
テスト環境:3 つの OpenStore ウォーム/ホット共有コンピューティングノード、各ノードは 16 vCPU と 64 GB のメモリを搭載。データセットは、60 シャードにまたがる 60 億のドキュメントを含む、ビジネスログデータの単一の 1.6 TB インデックスです。クエリは 3 TermQuery(and) + TimeRange + Sort + Datehistogram で構成され、シャードあたり 1,000 万ヒット (ヒット率 10%) です。
テスト結果:
単一シャードのクエリレイテンシーが 65% 削減されました。
複数シャードのクエリレイテンシーが 53% 削減されました。
同時クエリの有効化
次のコマンドを実行して、同時クエリ機能を有効化します:
PUT _cluster/settings
{
"persistent": {
"apack.analytic_search.doc_concurrency.enabled": "true"
}
}有効化されると、新しいクエリはデフォルトの同時実行ポリシーを使用します。次のパラメーターを使用して、この動作を調整できます。
クラスターレベルの設定
パラメーター | デフォルト | 説明 |
apack.analytic_search.doc_concurrency.enabled | false | 同時クエリ機能を有効または無効にします。 |
apack.analytic_search.doc_concurrency.concurrent.policy | 80%:4;90%:2 | 同時実行ポリシー。フォーマットは |
apack.analytic_search.doc_concurrency.min_support_doc | 10000 | この値よりも少ないドキュメントを含むインデックスに対して、同時クエリを無効にします。 |
apack.analytic_search.doc_concurrency.min_support_processors | 4 | この値よりも少ない vCPU を持つノードで、同時クエリを無効にします。 |
apack.analytic_search.doc_concurrency.max_support_heap_usage | 80% | JVM ヒープ使用量がこのパーセンテージを超えるノードで、同時クエリを無効にします。 |
apack.analytic_search.doc_concurrency.max_support_cpu_usage | 90 | CPU 使用率がこのパーセンテージを超えるノードで、同時クエリを無効にします。 |
インデックスレベルの設定
パラメーター | デフォルト | 説明 |
index.apack.analytic_search.doc_concurrency.enabled | true | インデックスの同時クエリを有効または無効にします。 |