Tous les produits
Search
Centre de documentation

Elasticsearch:Use the pruning feature for a time series index

Dernière mise à jour :Aug 09, 2026

Les requêtes par plage de temps sur des index de séries temporelles volumineux peuvent être lentes, car Elasticsearch standard analyse tous les segments, même s'ils ne contiennent pas de données correspondantes. La fonctionnalité de pruning résout ce problème en modifiant la manière dont Alibaba Cloud Elasticsearch fusionne les segments d'index : elle regroupe les données adjacentes dans le temps afin que les requêtes puissent ignorer les segments situés entièrement en dehors de la plage interrogée. Cela réduit la latence des requêtes jusqu'à 40 %.

Remarque

Exécutez toutes les commandes de cette rubrique dans la console Kibana. Pour plus d'informations, consultez Se connecter à la console Kibana.

Prérequis

Vous avez créé un cluster Alibaba Cloud Elasticsearch V6.7.0 ou V7.10.0. La version du noyau du cluster V6.7.0 doit être la 1.2.0 ou une version ultérieure. Pour plus d'informations sur la création d'un cluster, consultez Créer un cluster Alibaba Cloud Elasticsearch.

Versions prises en charge

La fonctionnalité de pruning est disponible sur :

  • Alibaba Cloud Elasticsearch V6.7.0 avec la version du noyau 1.2.0 ou ultérieure

  • Alibaba Cloud Elasticsearch V7.10.0

Fonctionnement de la fonctionnalité de pruning

Elasticsearch standard fusionne les segments d'index uniquement en fonction de leur taille. Les segments de tailles similaires sont regroupés, ce qui signifie qu'un seul segment peut couvrir des plages de temps arbitraires. Une requête par plage de temps doit alors analyser tous les segments pour trouver les données correspondantes.

Lorsque le pruning est activé, la fusion des segments prend en compte à la fois la taille et le champ de série temporelle. Les segments de tailles similaires contenant également des données de périodes adjacentes sont fusionnés ensemble. Chaque segment résultant contient une plage de temps continue, permettant ainsi à Elasticsearch d'ignorer les segments situés entièrement en dehors de la plage de temps interrogée.

Elasticsearch standard Alibaba Cloud Elasticsearch (pruning activé)
Politique de fusion des segments Basée uniquement sur la taille ; les segments couvrent des plages de temps arbitraires Basée sur la taille et le champ de série temporelle ; chaque segment contient une plage de temps continue
Performances des requêtes Analyse tous les segments pour chaque requête Ignore les segments en dehors de la plage de temps interrogée ; améliore les performances de 40 %

Contraintes

  • Activez le pruning lors de la création de l'index. Le pruning affecte la manière dont les segments sont fusionnés pendant l'indexation et la compaction. Si vous l'activez après la création de l'index, les performances de requête attendues ne seront pas atteintes.

  • Ne réactivez pas le pruning après l'avoir désactivé. Après avoir désactivé la fonctionnalité de pruning pour un index, nous vous recommandons de ne pas la réactiver pour cet index. Si vous la réactivez et que la fusion des segments de l'index couvre des données non liées aux séries temporelles, les performances de requête attendues ne seront pas atteintes.

  • Le champ de série temporelle doit être de type DATE ou LONG.

Activer la fonctionnalité de pruning

Spécifiez un champ de série temporelle lors de la création d'un index. L'exemple suivant utilise timestamp comme champ de série temporelle :

PUT index-1/_settings
{
    "index" : {
        "merge.policy.time_series_field" : "timestamp"
    }
}

Interroger des données de séries temporelles

Utilisez un filtre range sur le champ de série temporelle pour tirer parti du pruning. Elasticsearch ignore les segments dont la plage de temps entière se situe en dehors du filtre et recherche uniquement dans les segments pertinents.

L'exemple suivant filtre les données par le champ timestamp et le champ region :

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"
                        ]
                    }
                }
            ]
        }
    }
}

Désactiver la fonctionnalité de pruning

La désactivation du pruning nécessite la fermeture de l'index, la mise à jour de ses paramètres, puis sa réouverture.

Important

Après avoir désactivé le pruning, ne le réactivez pas sur le même index. Consultez Contraintes pour plus de détails.

  1. Fermez l'index.

    POST index-1/_close
  2. Définissez merge.policy.time_series_field sur null pour désactiver le pruning.

    PUT index-1/_settings
    {
        "index" : {
            "merge.policy.time_series_field" : null
        }
    }
  3. Rouvrez l'index.

    POST index-1/_open