時系列インデックスからデータをクエリする場合、時間範囲を指定してデータをフィルタリングできます。データ量が多いほど、クエリのレイテンシが長くなります。プルーニング機能を使用して、クエリのパフォーマンスを向上させることができます。このトピックでは、プルーニング機能の使用方法について説明します。
前提条件
Alibaba Cloud Elasticsearch V6.7.0 または V7.10.0 クラスタが作成されていること。V6.7.0 クラスタのカーネルバージョンは 1.2.0 以後である必要があります。クラスタの作成方法の詳細については、Alibaba Cloud Elasticsearch クラスタを作成するをご参照ください。背景情報
プルーニング機能は、セグメントのマージとクエリのパフォーマンスを向上させます。次の表は、セグメントのマージポリシーとクエリのパフォーマンスに関して、オープンソースの Elasticsearch と Alibaba Cloud Elasticsearch を比較したものです。| サービス | セグメントマージポリシー | クエリパフォーマンス |
| オープンソース Elasticsearch | インデックスセグメントは、サイズに基づいてマージされます。サイズが類似しているインデックスセグメントがマージされます。この方法は効率的ですが、データの連続性を保証することはできません。 | すべてのデータがクエリ対象としてスキャンされるため、パフォーマンスが大幅に低下します。 |
| Alibaba Cloud Elasticsearch(プルーニング機能が有効になっている場合) | インデックスの作成時に時系列フィールドが追加されます。インデックスセグメントは、サイズと時系列フィールドに基づいてマージされます。サイズが類似していて、隣接する期間のデータを含むインデックスセグメントがマージされます。これにより、データの連続性が向上します。 | クエリで指定された時間範囲に基づいてデータがプルーニングされるため、クエリのパフォーマンスが 40% 向上します。 |
説明 このトピックで提供されているすべてのコマンドは、Kibana コンソールで実行できます。詳細については、Kibana コンソールにログオンするをご参照ください。
注意事項
- プルーニング機能は、カーネルバージョンが V1.2.0 以後の Alibaba Cloud Elasticsearch V6.7.0 クラスタ、および V7.10.0 クラスタでのみ使用できます。
- インデックスの作成時に、インデックスのプルーニング機能を有効にする必要があります。インデックスの作成後にこの機能を有効にした場合、期待されるクエリパフォーマンスは達成できません。
- インデックスのプルーニング機能を無効にした後、そのインデックスに対してこの機能を再度有効にしないことをお勧めします。再度有効にした場合、インデックスのセグメントマージが時系列以外のデータを含むと、期待されるクエリパフォーマンスは達成できません。
インデックスのプルーニング機能を有効にする
プルーニング機能を有効にするには、インデックスの作成時に時系列フィールドを指定します。次のコードでは、timestamp を時系列フィールドとして使用しています。
PUT index-1/_settings
{
"index" : {
"merge.policy.time_series_field" : "timestamp"
}
}重要 時系列フィールドのデータ型は、DATE または LONG である必要があります。
指定した時系列フィールドに基づいてデータをクエリする
次のコマンドを実行すると、システムは timestamp フィールドに基づいてデータをフィルタリングし、データを検索します。
POST index-1/_search
{
"query": {
"bool": {
"filter": [
{
"range": {
"timestamp": {
"format": "yyyy-MM-dd HH:mm:ss",
"gte": "2020-06-01 23:00:00",
"lt": "2020-06-06 23:05:00",
"time_zone": "+08:00"
}
}
},
{
"terms": {
"region": [
"sh"
]
}
}
]
}
}
}インデックスのプルーニング機能を無効にする
- インデックスを無効にします。
POST index-1/_close - インデックスの
settingsを更新して、プルーニング機能を無効にします。PUT index-1/_settings { "index" : { "merge.policy.time_series_field" : null } } - インデックスを再度有効にします。
POST index-1/_open