Sur l’un de nos projets, nous avons le besoin de mettre à jour des index Solr (en cas d’évolutions fonctionnelles par exemple) mais sans indisponibilité du site. Jusqu’à présent, nous redémarrions le serveur Solr et avions prévu un mode « dégradé ». Mais il existe d’autres méthodes, bien plus efficaces.
Si votre serveur Solr est utilisé par plusieurs sites, ou simplement si sans ce serveur tout votre site tombe par terre, mais que vous avez absolument besoin de rajouter un nouvel index pour mettre en production une nouvelle fonctionnalité, il vous reste deux solutions :
-# Redémarrer Solr, en espérant que personne ne passera sur le site à ce moment précis (donc idéalement la nuit, qui est également le moment où le taux de fausses manipulations est le plus élevé) ;
-# Recharger les schémas à chaud :)
Créer un nouvel index
Pour ajouter un nouvel index, il faut bien sûr l’avoir créé « physiquement » (dossier avec schema.xml). À ce stade, Solr n’a pas pris en compte la modification, et si vous essayez d’indexer des documents sur cet index, il vous répondra qu’il n’existe pas. Il faut donc lui demander de le prendre en compte, sans relancer le service.
Pour cela, il suffit de consulter une URL de configuration à chaud (en supposant que votre serveur tourne sur localhost, et écoute le port 8983) :
{ http://localhost:8983/solr/admin/cores?action=CREATE&name=
{nomIndex&instanceDir=
nomDossier }}
Après ça, vous allez pouvoir tranquillement démarrer vos indexations sur ce nouvel index, avant de déployer votre super nouvelle fonctionnalité, qui marchera comme un charme, et ce sans indisponibilité constatée pendant le déploiement de la partie Solr.
Modifier un index
Pour modifier un index (ajouter ou modifier un champ), il faut modifier le fichier « schema.xml
» correspondant. Comme pour la création d’index, Solr ne prend pas les modifications tout de suite en compte, et cette fois l’URL de re-configuration sera :
{ http://localhost:8983/solr/admin/cores?action=RELOAD&core=
{nomIndex }}
Configuration persistante
Si vous voulez que tout ça reste après un re-démarrage du serveur, il faut que le fichier de configuration général « solr/solr.xml
» contienne la mention « persistent=true
« , que le chemin « adminPath
» corresponde aux exemples, et qu’il soit accessible en écriture bien sûr.
Par exemple ? :
<?xml version='1.0' encoding='UTF-8' ?>
<solr persistent='true'>
<cores adminPath='/admin/cores'>
<core …
…
Aller plus loin
Cette page de la documentation de Solr est une mine d’or, la commande « SWAP
» notamment est extrêmement utile dans un cadre de maintenance avec nécessité de ne pas redémarrer le service : un must-read pour tous les utilisateurs de Solr !