La fonctionnalité Searchable Snapshot stocke les données historiques sous forme de snapshots dans Alibaba Cloud OSS tout en conservant la capacité d'interrogation. Elle permet de réduire les coûts de stockage sans compromettre la disponibilité des données. Pour plus d'informations, consultez la documentation ES Searchable snapshots.
Restrictions
Activer les nœuds de données d'archive
Activez les nœuds de données d'archive sur votre instance Alibaba Cloud Elasticsearch pour utiliser la fonctionnalité Searchable Snapshot. Ces nœuds constituent la couche de calcul : ils conservent les métadonnées des index, gèrent le cache local et récupèrent les blocs de données depuis Alibaba Cloud OSS à la demande.
Connectez-vous à la console Alibaba Cloud Elasticsearch.
-
Suivez les étapes appropriées selon votre instance :
Pour les nouvelles instances 8.17.0 : Sur la page de création d'instance, sélectionnez la version 8.17.0. Dans la section des spécifications de l'instance, sélectionnez Archive Data Node et configurez le nombre de nœuds ainsi que leurs spécifications.
-
Sélectionnez les spécifications des nœuds.
Les nœuds de données d'archive ne nécessitent pas de grands disques locaux, car les données sont stockées dans Alibaba Cloud OSS. Configurez une mémoire suffisante pour améliorer le taux de succès du cache. Spécification recommandée : 4 cœurs et 16 Go de mémoire ou plus, avec un disque de 500 Go ou plus (Efficient Cloud Disk ou ESSD).
Confirmez l'achat et attendez la fin de l'opération. Une fois les nœuds de données d'archive prêts, la fonctionnalité Searchable Snapshot est activée par défaut et aucune action supplémentaire n'est requise.
Configurer un référentiel de snapshot OSS
Alibaba Cloud Elasticsearch inclut le plugin repository-oss par défaut. Vous pouvez donc utiliser Alibaba Cloud OSS comme référentiel de snapshot sans configuration supplémentaire.
Le référentiel aliyun_auto_snapshot par défaut supprime périodiquement les anciennes données de snapshot. Si vous utilisez ce référentiel pour les Searchable Snapshots, les données d'index montées seront définitivement perdues lors de la suppression du snapshot. Dans un environnement de production, créez un référentiel de snapshot OSS distinct.
Exécutez la commande suivante dans Kibana Dev Tools pour enregistrer un référentiel de snapshot OSS :
PUT _snapshot/my_oss_repo
{
"type": "oss",
"settings": {
"endpoint": "http://oss-cn-hangzhou-internal.aliyuncs.com",
"access_key_id": "<your_access_key_id>",
"secret_access_key": "<your_secret_access_key>",
"bucket": "<your_bucket_name>",
"base_path": "es_snapshots",
"compress": true,
"chunk_size": "500mb"
}
}
|
Paramètre |
Description |
|
|
Endpoint de la région Alibaba Cloud OSS. L'utilisation d'un endpoint privé |
|
|
Votre ID AccessKey Alibaba Cloud. L'utilisateur RAM associé doit disposer des autorisations de lecture et d'écriture sur le bucket cible. |
|
|
Votre secret AccessKey Alibaba Cloud. |
|
|
Nom du bucket Alibaba Cloud OSS. Le bucket doit se trouver dans la même région que votre instance Alibaba Cloud Elasticsearch. |
|
|
Préfixe du chemin de stockage des snapshots au sein du bucket. |
|
|
Indique s'il faut compresser les fichiers de métadonnées. Il est recommandé de définir cette option sur |
|
|
Taille des chunks pour le téléchargement de fichiers volumineux. Cette option est utile pour les index de grande taille. |
Vérifiez la connexion au référentiel :
POST _snapshot/my_oss_repo/_verify
Une réponse réussie liste les nœuds du cluster, confirmant que chaque nœud peut accéder à Alibaba Cloud OSS avec les autorisations requises. Pour obtenir la liste complète des paramètres du plugin OSS, consultez la documentation elasticsearch-repository-oss.
Créer et monter un snapshot
Créer un snapshot
Créez un snapshot des index que vous souhaitez archiver.
La commande suivante crée un snapshot nommé snapshot_20260227 et le stocke dans le référentiel my_oss_repo.
PUT _snapshot/my_oss_repo/snapshot_20260227
{
"indices": "logs-2025-*",
"ignore_unavailable": true,
"include_global_state": false
}
|
Paramètre |
Exemple |
Description |
|
Nom du référentiel |
|
• Emplacement de stockage du snapshot : Nom du référentiel correspondant au bucket Alibaba Cloud OSS vérifié. • Condition requise : Assurez-vous que l'état du référentiel est |
|
Nom du snapshot |
|
• Identifiant du fichier de sauvegarde : Nom unique du fichier de sauvegarde généré dans Alibaba Cloud OSS. • Convention de nommage : Il est recommandé d'inclure une date (par exemple, • Unicité : Le nom doit être unique au sein du référentiel. La requête échouera si le nom existe déjà. |
|
indices |
|
• Définit la portée de la sauvegarde : Utilise le caractère générique • Objectif : Sauvegarde uniquement les données de journal de l'année 2025, en excluant les index d'autres années ou les index système tels que |
|
ignore_unavailable |
|
• Mécanisme de tolérance aux pannes : Si défini sur • Bonne pratique : Pour les sauvegardes de journaux, il est recommandé de définir cette option sur |
|
include_global_state |
|
• Contrôle de l'état global : Si • Bonne pratique : Pour les sauvegardes de journaux, cette option est généralement définie sur |
Vérifiez la progression du snapshot :
GET _snapshot/my_oss_repo/snapshot_20260227/_status
Dans la réponse, si le champ state indique SUCCESS et que shards_stats.failed est égal à 0, la commande de snapshot a réussi.
Les données suivantes sont fournies à des fins de test.
POST logs-2025-01-01/_doc
{ "message": "test log data 01", "level": "info", "timestamp": "2025-01-01T10:00:00" }
POST logs-2025-01-02/_doc
{ "message": "test log data 02", "level": "warn", "timestamp": "2025-01-02T10:00:00" }
POST logs-2025-01-03/_doc
{ "message": "test log data 03", "level": "error", "timestamp": "2025-01-03T10:00:00" }
POST logs-2025-01-04/_doc
{ "message": "test log data 04", "level": "info", "timestamp": "2025-01-04T10:00:00" }
POST logs-2025-01-05/_doc
{ "message": "test log data 05", "level": "debug", "timestamp": "2025-01-05T10:00:00" }
Monter sur le niveau Frozen
Utilisez l'API Mount Snapshot pour monter un index issu du snapshot en mode partiellement monté.
POST _snapshot/my_oss_repo/snapshot_20260227/_mount?storage=shared_cache&wait_for_completion=true
{
"index": ".ds-logs-2025-01-01-2026.03.03-000001",
"renamed_index": "frozen-logs-2025-01-01",
"index_settings": {
"index.number_of_replicas": 0
},
"ignore_index_settings": ["index.refresh_interval"]
}
|
Paramètre |
Description |
|
|
Nom de l'index. Exécutez |
|
|
Utilise le mode partiellement monté, où les données restent dans Alibaba Cloud OSS et seules les données fréquemment consultées sont mises en cache localement. |
|
|
Nouveau nom de l'index monté. Il est recommandé d'ajouter un préfixe tel que Important
Pour monter plusieurs index, exécutez cette commande pour chaque index en mettant à jour les paramètres |
|
|
Définissez sur |
|
|
Définissez sur |
La suppression d'un snapshot référencé par un Searchable Snapshot rendra les données de l'index indisponibles.
Interroger l'index monté
L'interrogation d'un index Searchable Snapshot est identique à celle d'un index classique :
GET frozen-logs-2025-01-01/_search
{
"query": {
"match": {
"message": "error"
}
}
}
Vous pouvez utiliser des caractères génériques pour interroger simultanément les index en ligne et archivés :
GET logs-2025-*,frozen-logs-2025-*/_search
{
"query": {
"range": {
"timestamp": {
"gte": "2025-01-01",
"lt": "2025-02-01"
}
}
}
}
Une réponse est considérée comme réussie lorsque _shards.successful est égal au nombre total de shards et que hits.total.value est supérieur à 0.
Démonter un index Searchable Snapshot
Pour démonter un index Searchable Snapshot, supprimez-le. Cette action n'affecte pas les données de snapshot sous-jacentes dans Alibaba Cloud OSS, qui peuvent être remontées ultérieurement.
DELETE frozen-logs-2025-01-01
Pour restaurer les données archivées sous forme d'index accessible en écriture, utilisez l'API Restore standard afin de récupérer les données du snapshot depuis Alibaba Cloud OSS vers le cluster Elasticsearch :
POST _snapshot/my_oss_repo/snapshot_20260227/_restore
{
"indices": ".ds-logs-2025-01-01-2026.03.03-000001",
"rename_pattern": "(.+)",
"rename_replacement": "restored-$1"
}
Automatiser le cycle de vie des données avec ILM
Utilisez une politique Index Lifecycle Management (ILM) pour migrer automatiquement les index vers le niveau Frozen. La politique suivante met en œuvre un cycle de vie Hot → Warm → Frozen → Delete. Lorsqu'un index entre dans la phase Frozen, ILM crée automatiquement un snapshot dans Alibaba Cloud OSS et le monte en mode partiellement monté, sans intervention manuelle :
PUT _ilm/policy/logs_lifecycle_policy
{
"policy": {
"phases": {
"hot": {
"min_age": "0ms",
"actions": {
"rollover": {
"max_primary_shard_size": "50gb",
"max_age": "7d"
}
}
},
"warm": {
"min_age": "30d",
"actions": {
"shrink": { "number_of_shards": 1 },
"forcemerge": { "max_num_segments": 1 }
}
},
"frozen": {
"min_age": "90d",
"actions": {
"searchable_snapshot": {
"snapshot_repository": "my_oss_repo"
}
}
},
"delete": {
"min_age": "365d",
"actions": {
"delete": {}
}
}
}
}
}
Aperçu des phases du cycle de vie :
|
Phase |
Moment du déclenchement |
Action principale |
Description |
|
Hot |
|
Rollover |
|
|
Warm |
|
Shrink |
|
|
Frozen |
|
Searchable Snapshot |
|
|
Delete |
|
Delete |
|
Fonctionnement
Searchable Snapshot utilise une architecture dissociant le stockage et le calcul, où les nœuds de données d'archive (couche de calcul) et Alibaba Cloud OSS (couche de stockage) travaillent conjointement :
Alibaba Cloud OSS sert de couche de stockage persistante et de référentiel de snapshot. Toutes les données de snapshot sont stockées dans Alibaba Cloud OSS, qui utilise une redondance intégrée pour garantir la fiabilité des données. Cela élimine le besoin de shards réplica dans Elasticsearch.
-
Le nœud de données d'archive constitue la couche de calcul, chargée de recevoir les requêtes et de coordonner l'accès aux données. Chaque nœud contient trois composants clés :
Métadonnées : Stocke la structure de l'index et les informations de mappage des shards, maintenant une vue logique de l'index Searchable Snapshot.
Cache partagé : Met en cache les blocs de données fréquemment consultés. Ce cache est partagé par tous les shards des index Searchable Snapshot présents sur le même nœud.
Moteur de requête : Reçoit les requêtes, vérifie la présence des données dans le cache et récupère les blocs de données depuis Alibaba Cloud OSS en cas d'absence (cache miss).
Le flux de données se divise en chemins d'écriture et de requête :
Chemin d'écriture : Les index sont capturés sous forme de snapshot vers Alibaba Cloud OSS via des actions manuelles ou des politiques ILM. Lorsqu'ils sont montés avec le paramètre
storage=shared_cache, un index passe en mode partiellement monté : les données restent dans Alibaba Cloud OSS tandis que le nœud de données d'archive ne charge que les métadonnées.Chemin de requête : Le nœud de données d'archive vérifie d'abord le cache partagé local pour les blocs de données requis. En cas de succès (cache hit), il renvoie directement le résultat avec des performances similaires à celles des données locales. En cas d'échec (cache miss), il récupère les blocs de données depuis Alibaba Cloud OSS, renvoie le résultat et les met en cache pour les requêtes futures.
Par défaut, le cache partagé occupe 90 % de l'espace disque total du nœud (ou l'espace total moins 100 Go, selon la valeur la plus faible). Il utilise une politique Least Recently Used (LRU) pour évincer les blocs de données froids.
Elasticsearch classe les données en plusieurs niveaux en fonction de leur fréquence d'accès. Searchable Snapshot dessert le niveau le plus économique, à savoir le niveau Frozen :
|
Niveau de données |
Support de stockage |
Caractéristiques |
|
Niveau Hot |
SSD local |
Gère les écritures en temps réel et les requêtes fréquentes. Conserve des shards réplica pour garantir une haute disponibilité. |
|
Niveau Warm |
Disque standard |
Les données ne sont plus écrites, mais restent disponibles pour des requêtes de fréquence moyenne. |
|
Niveau Frozen |
Stockage d'objets OSS + cache local |
Les données résident dans Alibaba Cloud OSS, les nœuds de données d'archive ne mettant en cache que les données chaudes. Les coûts de stockage sont nettement inférieurs à ceux du niveau Hot. |
Searchable Snapshot réduit les coûts grâce aux mécanismes suivants :
Élimination des shards réplica : Alibaba Cloud OSS assure la fiabilité des données grâce à sa redondance intégrée, supprimant ainsi le besoin de shards réplica. Cela réduit les besoins de stockage de 50 % et supprime les coûts de trafic inter-zones de disponibilité.
Séparation du stockage et du calcul : Toutes les données sont stockées dans Alibaba Cloud OSS, dont le prix unitaire est bien inférieur à celui du stockage sur disque cloud (souvent d'un facteur dix ou plus). Les nœuds de données d'archive ne stockent que les métadonnées et un cache de données chaudes.
Ratio de densité de données extrêmement élevé : Les nœuds de données d'archive peuvent atteindre un ratio mémoire/données de 1:1500. Un nœud disposant de 64 Go de mémoire peut gérer environ 100 To de données archivées, alors que les mêmes ressources dans le niveau Warm ne pourraient prendre en charge qu'environ 10 To.
Cas d'utilisation
Archivage des journaux : Migrez les anciens journaux vers le niveau Frozen pour réduire les coûts de stockage tout en conservant la capacité de recherche.
Conformité et audit : Stockez les données à long terme à faible coût à des fins de conformité, avec une récupération à la demande.
Analyse des données historiques : Analysez les données historiques rarement consultées sans occuper de stockage haute performance coûteux.