.. _reindexation_es:

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.

Déclenchement
=============

.. caution:: 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 :

.. code-block:: bash

   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:

.. code-block:: bash

   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.

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

.. caution:: 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.

.. caution:: 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.

.. caution:: Si un tenant fait partie d'un groupe de tenant, il faudra re-indexer l'ensemble des tenants
