AliES は、Alibaba Cloud Elasticsearch 向けに高度にカスタマイズされたカーネルです。 AliES は、オープンソースの Elasticsearch カーネルが提供するすべての機能をサポートし、メトリックの最適化、スレッドプーリング、サーキットブレーカーの最適化、クエリと書き込みのパフォーマンスの最適化などの追加機能を提供します。追加機能は、Alibaba Cloud Elasticsearch チームのさまざまなシナリオでの豊富な経験に基づいて開発されています。これらの機能は、クラスターの安定性とパフォーマンスの向上、コストの削減、監視と O&M の範囲の拡大に役立ちます。このトピックでは、AliES の各バージョンにおける新機能と最適化された機能について説明します。
Elasticsearch V7.16.2
カーネルバージョン 1.7.0
aliyun-timestream プラグインが提供されています。このプラグインを使用すると、時系列インデックスの作成、変更、クエリ、削除を行うことができ、時系列シナリオで時系列データを管理するために必要な操作を簡素化できます。詳細については、「aliyun-timestream の概要」をご参照ください。
Prometheus Querying Language(PromQL)ステートメントを実行して、保存されているデータをクエリできます。詳細については、「aliyun-timestream に基づいて Elasticsearch を Prometheus および Grafana と統合して統合監視を実装する」をご参照ください。
Elasticsearch V7.10.0
カーネルバージョン 1.12.0
新機能と最適化された機能
検索
analysis-dynamic-synonym プラグインが提供されています。
プライマリシャードバランシング機能がサポートされています。
ワイルドカードクエリとプレフィックスクエリのパラメーター値の長さが制限されています。
キーワードタイプの terms クエリや prefix クエリなどの複雑なクエリが、doc_values に基づいて最適化されています。これにより、ヒット率が低いシナリオでのクエリパフォーマンスが 80% 向上します。
数値型の term クエリと terms クエリが、doc_values に基づいて最適化されています。これにより、ヒット率が低いシナリオでのクエリパフォーマンスが 80% 向上します。
BKD ツリーの term クエリと terms クエリの パフォーマンスが、遅延読み込み戦略に基づいて 30% 最適化されています。
バグ修正
ストレージ層のタスク管理が最適化され、RPC ベースの通信が時々停止するという問題が解決されました。
データレプリケーションプロセスが最適化され、レプリカノードでの fail engine エラーが回避されます。
レプリカシャードのプロモーションプロセスが最適化され、プライマリインデックスとレプリカインデックス間の不整合が回避されます。
カーネルバージョン 1.10.0
新機能と最適化された機能
ストア/スナップショット
LuceneVerifyIndexOutput が最適化され、インデックスの復元速度が向上しました。詳細については、「ES pull 96975」を参照してください。
クラスター調整
ClusterState は永続タスクによって参照されなくなりました。大規模クラスターでは、専用マスターノードのメモリ使用量が高くなります。大規模クラスターでのリーダー選出のタイムアウトを回避するために、cluster.election.initial_timeout のデフォルト値が 100 ミリ秒から 1 秒に変更されました。詳細については、「ES pull 90724」を参照してください。
検索
エンドツーエンドのクエリタイムアウト機能が追加され、クエリ全体の時間を効果的に制御できるようになりました。この機能により、タイムアウトが発生した場合でも一部の結果を返すことができます。
アクセスログにいくつかのフィールドが追加されました。
バグ修正
Lucene
Lucene Merge によって参照される DV 更新インデックスファイルが同時フラッシュ操作によって削除されるという問題が修正されました。詳細については、「Lucene」を参照してください。
カーネルバージョン 1.9.0
新機能と最適化された機能
同時クエリのフレームワークが再構築され、カーネル拡張版クラスター向けに最適化されました。
クエリ時間が短縮されます。
メモリを再利用できるようになり、Java 仮想マシン(JVM)の高いメモリ使用量とガベージコレクション(GC)のオーバーヘッドが改善されました。これにより、リソース使用率が向上します。
生テキストの同時フェッチにおけるフェッチフェーズの時間が短縮されます。たとえば、size パラメーターを 10000 に設定すると、フェッチフェーズの時間が 6 ~ 10 倍短縮され、全体的な時間が 50% 短縮されます。
クエリでは、パーセンタイル集計、パーセンタイルランク集計、サンプラー集計、多様化サンプラー集計、有意テキスト集計、geodistance 集計、geohash グリッド集計、geotile グリッド集計、geobounds 集計、geocentroid 集計、スクリプトメトリック集計などの集計タイプがサポートされています。
traceId やクエリ時間関連のフィールドなどのフィールドがエンドツーエンドのアクセスログに追加されました。traceId を使用してクエリプロセスを連結できます。
生テキストのカスタムインデックス構造とマッピング解析が最適化されました。これにより、生テキストの書き込みパフォーマンスが 2 倍になります。
次のコードを使用してキャッシュを有効にすることができます。これにより、プライマリクエリは少ないがサブルクエリが多い一部のシナリオでサブルクエリに対してキャッシュが有効にならないという問題を解決できます。
PUT _cluster / settings { "persistent": { "search.query_cache_get_wait_lock_enable": "true", "search.query_cache_skip_factor": "200000000" } }k 近傍法(k-NN)クエリを使用するシナリオで、プライマリシャードとレプリカシャード間のデータの不整合が最適化されました。
バグ修正
ブルー/グリーンアップデート中にノード上のシャードが移行された後、
GET _cat/nodeコマンドを実行できないという問題が修正されました。
カーネルバージョン 1.8.0
aliyun-timestream プラグインが提供されています。このプラグインは、時系列データのストレージと使用パフォーマンスを向上させるために使用されます。このプラグインを使用すると、時系列インデックスの作成、変更、クエリ、削除、PromQL ステートメントを実行して Elasticsearch に保存されているデータのクエリ、InfluxDB ラインプロトコルを使用して時系列インデックスにデータを書き込むことができます。このプラグインは、時系列シナリオで時系列データを管理するために必要な操作を簡素化できます。詳細については、「aliyun-timestream の概要」、「aliyun-timestream に基づいて Elasticsearch を Prometheus および Grafana と統合して統合監視を実装する」、および「aliyun-timestream を InfluxDB ラインプロトコルと統合する」をご参照ください。
カーネルバージョン 1.7.0
新機能
analytic-search プラグインが提供され、ログ関連のシナリオでのクエリパフォーマンスが大幅に向上します。詳細は以下のとおりです。
インデックスマージポリシーと日付ヒストグラム集計ポリシーが最適化されました。これにより、Kibana コンソールの [Discover] ページで実行されるクエリなど、ログクエリシナリオでの無条件または単一条件クエリの パフォーマンスが 6 倍以上向上します。毎日 1 TB を超えるデータが追加されるシナリオでは、クエリが完了するまでの時間が数分から 5 秒以下に短縮されます。
同時クエリが最適化されました。同時クエリの場合、同時データリコールがサポートされています。これにより、リソース使用率が向上し、ログ関連のシナリオでのデータリコールに必要な平均時間が 50% 短縮されます。
読み取り専用の小さなセグメントは、強制マージの前に継続的にマージされます。これにより、クエリパフォーマンスが 20% 向上します。
パフォーマンスの向上
軽量圧縮アルゴリズム LZ4 を使用して、クライアントノードとデータノード間で書き込みリクエストを送信します。これにより、ノードのネットワーク帯域幅のオーバーヘッドが 30% 削減されます。
シャードに対して強制マージを並列で実行できます。これにより、強制マージの時間が短縮されます。
生テキストの大規模データブロックを圧縮し、zstd 圧縮アルゴリズムのパラメーターを最適化できます。これにより、生テキストのサイズが 8% 削減されます。さらに、Lucene postings で Patched Frame of Reference(PFOR)メソッドがサポートされています。これにより、インデックスのサイズが 3% 削減されます。
バグ修正
aliyun-codec プラグインの source_reuse_doc_values 機能が、名前にピリオド(
.)が含まれるフィールドをサポートしていないという問題が修正されました。
カーネルバージョン 1.6.0
aliyun-codec プラグインに source_reuse_doc_values 機能が追加され、インデックスサイズとコストがさらに削減されました。詳細については、「aliyun-codec プラグインを使用する」をご参照ください。
aliyun-qos プラグインが V2.0 に更新され、よりきめ細かい調整タイプとパラメーターがサポートされるようになりました。詳細については、「aliyun-qos プラグインを使用する」をご参照ください。
カーネルバージョン 1.5.0
aliyun-codec プラグインが提供され、クラスターのカーネルの圧縮パフォーマンスが向上しました。詳細については、「aliyun-codec プラグインを使用する」をご参照ください。
search_as_you_type フィールドタイプに関連するバグが修正されました。詳細については、「search_as_you_type」を参照してください。
カーネルバージョン 1.4.0
aliyun-knn プラグインが更新され、書き込みパフォーマンスが向上しました。このプラグインはスクリプトクエリをサポートし、関連ハードウェアの最適化された機能と統合されてベクトル検索機能が向上しています。
aliyun-qos プラグインが最適化され、クラスターレベルの調整が向上しました。このプラグインを使用する場合、Elasticsearch クラスター内のノードのトポロジと負荷に注目する必要はありません。トラフィックはノードに自動的に分散されます。これにより、クラスターの使いやすさと安定性が向上します。
カーネルバージョン 1.3.0
低速クエリ分離機能が提供され、異常なクエリがクラスターの安定性に与える影響が軽減されます。
gig プラグインが提供され、クラスターで例外が発生した後、数秒以内にスイッチオーバーを実行できます。このプラグインは、異常なノードによって発生するクエリジッターを防ぎます。
説明Standard Edition の Elasticsearch V7.10.0 クラスターの場合、gig プラグインは aliyun-qos プラグインに統合されています。aliyun-qos プラグインはデフォルトでインストールされています。
物理レプリケーション機能が提供され、レプリカシャードを持つインデックスの書き込みパフォーマンスが向上します。
時系列インデックスに対してプルーニング機能が提供され、インデックスのクエリパフォーマンスが向上します。
クラスターのアクセスログを表示できます。これらのログには、時間、ノード IP、コンテンツなどのフィールドが含まれています。これらのログを使用して、問題のトラブルシューティングとリクエストの分析を行うことができます。
専用マスターノードのスケジューリング パフォーマンスが 10 倍向上しました。各専用マスターノードはより多くのシャードをスケジュールできます。
Elasticsearch V6.7.0
カーネルバージョン 1.3.0
低速クエリ分離機能が提供され、異常なクエリがクラスターの安定性に与える影響が軽減されます。
gig プラグインが提供され、クラスターで例外が発生した後、数秒以内にスイッチオーバーを実行できます。このプラグインは、異常なノードによって発生するクエリジッターを防ぎます。
上記の機能を使用する前に、Elasticsearch クラスターのカーネルバージョンが V1.3.0 であることを確認してください。そうでない場合は、カーネルをアップグレードしてください。カーネルバージョンが V0.3.0、V1.0.2、または V1.3.0 の Standard Edition クラスターのカーネルのみをアップグレードできます。
カーネルバージョン 1.2.0
物理レプリケーション機能が提供され、レプリカシャードを持つインデックスの書き込みパフォーマンスが向上します。
時系列インデックスに対してプルーニング機能が提供され、インデックスのクエリパフォーマンスが向上します。
クエリ中のプライマリキーベースのデータ重複排除が最適化されました。これにより、プライマリキーを含むドキュメントの書き込みパフォーマンスが 10% 向上します。
ヒープメモリを占有しない有限状態トランスデューサー(FST)がサポートされています。単一ノードは最大 20 TiB のインデックスデータを保存できます。
カーネルバージョン 1.0.2
クラスターのアクセスログを表示できます。これらのログには、時間、ノード IP、コンテンツなどのフィールドが含まれています。これらのログを使用して、問題のトラブルシューティングとリクエストの分析を行うことができます。
カーネルバージョン 1.0.1
JVM のサーキットブレーカーポリシーを設定できます。クラスターの JVM ヒープメモリの使用量が 95% に達すると、システムはクラスターを保護するためにリクエストを拒否します。ポリシーを設定するには、次のパラメーターを使用します。
indices.breaker.total.use_real_memory:デフォルト値は false です。
indices.breaker.total.limit:デフォルト値は 95% です。
カーネルバージョン 0.3.0
専用マスターノードのスケジューリング パフォーマンスが 10 倍向上しました。各専用マスターノードはより多くのシャードをスケジュールできます。
書き込みパフォーマンスが 10% 向上し、translog フラッシュのオーバーヘッドが削減されました。