# 5.25. Réindexation

Cette procédure consiste à réindexer le contenu des bases de données Elasticsearch-data (cluster d’indexation dédié aux données métier) en cas de perte ou d’inconsistance de données, à partir des informations présentes dans les bases de données MongoDB-data (replicaset MongoDB stockant les données métier de Vitam). Elle part du principe que le contenu des collections MongoDB-data n’a pas été altéré et que les différents indexes Elasticsearch-data sont toujours existants.

## 5.25.1. Déclenchement

Prudence

il est important d’arrêter les `services externals` et `scheduler` et s’assurer qu’aucun workflow n’est en cours avant de démarrer cette procédure.

La réindexation se déclenche de la manière suivante :

    ansible-playbook ansible-vitam-exploitation/reindex_es_data.yml -i environments/hosts.<environnement> --ask-vault-pass

Si nous voulons exécuter la re-indexation sur un ensemble de tenants, il faudra lancer la procédure de la manière suivante:

    ansible-playbook ansible-vitam-exploitation/reindex_es_data.yml -i environments/hosts.<environnement> --ask-vault-pass -e "vitam_tenant_ids=<tenantsList>"

Ce playbook s’assure que le composant `vitam-functional-administration` est démarré, puis procède à la réindexation et au re-aliasing (bascule sur le nouvel index) des collections suivantes :

- unit
- objectgroup
- logbookoperation
- securityprofile
- context
- ontology
- ingestcontract
- agencies
- accessionregisterdetail
- archiveunitprofile
- accessionregistersummary
- accesscontract
- fileformat
- filerules
- profile
- griffin
- preservationscenario
- managementcontract

Note

La réindexation peut s’opérer au besoin sur uniquement l’une des collections ci-dessus en spécifiant l’option –tags <collection> à l’exécution de la commande ansible.

Prudence

La réindexation de la collection griffin n’est pas utilisable dans cette version (bug 5762).

Prudence

La purge des anciens index n’est pas réalisée par cette procédure scriptée et est laissée à la charge de l’exploitant.

Prudence

Le rôle elasticsearch-mapping n’est pas joué par ce playbook. En cas de modification des fichiers de mapping ES des collections Unit et ObjectGroup, qui sont externalisés, il faudra rejouer les playbooks `metadata.yml` et `metadata_collect.yml` avant de réindexer.

Prudence

Si un tenant fait partie d’un groupe de tenant, il faudra re-indexer l’ensemble des tenants