Pourquoi la métrique des documents supprimés est-elle si élevée dans mon cluster Amazon OpenSearch Service ?

Lecture de 5 minute(s)
0

J'ai supprimé des documents dans mon cluster Amazon OpenSearch Service, mais je ne constate pas de récupération d'espace disque.

Brève description

Dans OpenSearch Service, la métrique DeletedDocuments est un compteur qui indique le nombre de documents marqués pour être supprimés. La métrique DeletedDocuments affiche une augmentation après le traitement des demandes de suppression et une diminution après la fusion des segments d'index dans votre cluster.

OpenSearch Service exécute automatiquement l'opération de fusion d'API à l'aide du paramètre de politique de fusion. Lors d'une fusion, les plus petits segments sont fusionnés en segments plus grands pour maintenir la taille de l'index. Les documents marqués pour suppression sont également supprimés pour libérer de l'espace disque supplémentaire.

Pour récupérer immédiatement de l'espace disque, vous pouvez supprimer un index plutôt que des documents individuels. Vous pouvez également utiliser l'API de fusion forcée avec le paramètre only_expunge_deletes pour effacer les documents supprimés d'un index.

Pour conserver les métadonnées d'index tout en récupérant de l'espace disque dans votre cluster, envisagez les approches suivantes :

Solution

Vérifier le nombre de documents supprimés

Pour vérifier le nombre de documents supprimés dans votre cluster OpenSearch Service, exécutez l'API de statistiques du cluster. La valeur obtenue à partir de l'appel d'API de statistiques du cluster s'affiche dans la métrique DocumentsSupprimés de votre cluster. La sortie renvoie une somme des documents supprimés pour tous les index présents dans votre cluster. Ce nombre peut être vérifié en utilisant le champ « docs.deleted » dans la réponse.

Par exemple, si votre cluster possède trois index (index1, index2 et index3), exécutez l'appel d'API de statistiques d'index :

GET index1/_stats
...
"docs": {
     "count": 100,
     "deleted": 1
}
... 
GET index2/_stats
...
"docs": {
     "count": 100,
     "deleted": 5
}
...
GET index3/_stats
...
"docs": {
     "count": 100,
     "deleted": 8
}
...

L'appel d'API des statistiques du cluster ajoute ensuite le champ « docs.deleted » pour tous les index présents dans votre cluster :

...
"docs": {
     "count": 1227677521,
     "deleted": 14
}
...

Si vous supprimez l'index2, l'appel d'API des statistiques du cluster ne calcule les valeurs que pour l'index1 et l'index3 :

GET _cluster/stats
...
"docs": {
     "count": 1227677521,
     "deleted": 9
}

Les segments sont maintenant fusionnés et les métadonnées d'index pour l'index2 sont effacées. Par conséquent, la valeur de la métrique DeletedDocuments est passée à 9.

Vérifier la taille de vos documents

Pour vérifier les tailles et le nombre de documents d'un index, utilisez l'API des index cat. Assurez-vous que le nouveau document a la même taille que le document existant dans votre cluster OpenSearch Service. L'utilisation d'un document de même taille garantit que les documents supprimés n'occupent pas d'espace disque supplémentaire.

Effacer les documents supprimés

Pour récupérer manuellement de l'espace disque, exécutez l'API de fusion forcée avec le paramètre only_expunge_deletes défini sur « true » :

POST /<index-name>/_forcemerge?only_expunge_deletes=true

Remarque : cette opération ne supprime que les segments contenant des documents marqués pour suppression.

Par conséquent, la fusion forcée diminue la quantité d'espace disque utilisée. Une fois les nouveaux segments créés, les anciens segments sont supprimés et les nouveaux segments ne contiennent plus les documents marqués pour suppression. Pour plus d'informations sur les documents supprimés, consultez Traitement des documents supprimés par Lucene sur le site Web Elasticsearch.

Toutefois, tenez compte des éléments suivants lors de l'exécution d'une opération de fusion forcée :

  • Effectuez une fusion forcée sur votre cluster uniquement lorsqu'il y a suffisamment d'espace de stockage disponible. Cette action est une opération gourmande en ressources.
  • L'opération de fusion forcée déclenche un processus intensif d'I/O et bloque toutes les nouvelles demandes adressées à votre cluster jusqu'à la fin de la fusion.
  • N'appelez l'opération de fusion forcée que pour les index en lecture seule, lorsqu'aucune donnée supplémentaire n'est écrite dans l'index. Si la fusion forcée est appelée sur un index en lecture/écriture, l'action peut entraîner la production de très grands segments (> 5 Go par segment). Lorsque cela se produit, la politique de fusion automatique ne prend pas en compte ces très grands segments pour les fusions futures, jusqu'à ce que les segments contiennent la plupart des documents supprimés. Par conséquent, l'utilisation du disque augmente et les performances de recherche se détériorent.

Vous pouvez également utiliser l'API de suppression par requête ou l'API de suppression pour supprimer manuellement tous les documents de votre cluster.

Récupérer immédiatement de l'espace disque

Pour récupérer immédiatement de l'espace disque, utilisez l'API de suppression d'index. La suppression d'un index ne crée aucun marqueur de suppression. Au lieu de cela, l'API de suppression d'index efface les métadonnées d'index et l'espace disque est immédiatement récupéré. L'espace disque récupéré est reflété dans la métrique DeletedDocuments.

Remarque : il est de bonne pratique de supprimer les anciens index inutilisés. Si vous supprimez un index actif, assurez-vous de bloquer la création automatique d'index. Pour plus d'informations, consultez Création automatique de flux de données et d'index (français non garanti) sur le site Web d'Elasticsearch.


Informations connexes

Comment puis-je résoudre les problèmes d'insuffisance d'espace de stockage dans mon domaine Amazon OpenSearch Service ?

Surveillance des métriques d'un cluster OpenSearch avec Amazon CloudWatch

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an