# 5.12. Gestion des indexes Elasticseach dans un contexte massivement multi-tenants

## 5.12.1. Présentation

Prudence

Attention, cette fonctionnalité est compliquée à utiliser et n’est nécessaire qu’en cas de contexte massivement multi-tenants. Il n’est pas utile de regrouper des tenants en dessous d’un usage inférieur à 10 tenants. Au delà de 50 tenants, cette fonctionnalité peut être utile mais uniquement dans le cas où une majorité de ces 50 tenants contiennent peu de données.

L’objectif de cette fonctionnalité est de pouvoir gérer plusieurs milliers de tenants en limitant les impacts sur les performances du cluster elasticsearch-data. Initialement, Vitam était prévu pour une gestion d’une dizaine de tenants avec l’utilisation de la topologie suivante pour la gestion des indexes dans la base elasticsearch-data:

- Masterdata (accesscontract, ingestcontract, ontology, formats…) : 1 index pour tous les tenants
- unit, logbookoperation, objectgroup : 1 index par tenant

Ainsi, cette nouvelle fonctionnalité offre la possibilité de regrouper certains tenants qui contiendraient peu de données afin d’éviter d’avoir un index dédié pour chaque tenant.

Prudence

Attention, en cas de modification de la distribution des tenants, une procédure de réindexation de la base elasticsearch-data est nécessaire. Cette procédure est à la charge de l’exploitation et nécessite un arrêt de service sur la plateforme. La durée d’exécution de cette réindexation dépend de la quantité de données à traiter.

## 5.12.2. Recommandations d’implémentation

En fonction de la quantité de données à traiter, il est conseillé de prévoir des plages de tenants en fonction de leur futur usage. Il est tout à fait possible de prévoir à l’avance des plages de tenants même si ils ne sont pas encore utilisés. Cela permet d’anticiper leur gestion future.

Par exemple, une recommandation serait de définir la convention suivante pour les plages de tenants en fonction de leur usage:
  - [1-99] : Plage pour les gros tenants qui nécessitent un index dédié.
  - [100-999] : Plage pour les tenants de taille moyenne qui pourraient être regroupés par dizaines.
  - [1000-9999] : Plage pour les petits tenants qui pourraient être regroupés par centaines.

En fonction de l’usage qui sera fait de certains tenants, il peuvent être amenés à être regroupés différemment. Un suivi de l’évolution de la quantité de données dans chacun des tenants et groupe de tenants est nécessaire afin d’anticiper les modifications nécessaires à effectuer en fonction des regroupements.