Paillasse/docs/runbooks/elasticsearch.md
Adam Belkacemi 777dd1cbc8 ajoute la recherche plein texte dans les cours et labs (bloc C)
Elasticsearch interne (jamais exposé, sécurité x-pack désactivée,
cohérent avec le reste des services internes de ce serveur), tas JVM
fixé à 512 Mo plutôt que le calcul automatique (jusqu'à 50 % de la
RAM système, désastreux sur ce serveur à 31 Go réels). Appels HTTP
directs depuis Laravel, pas de bibliothèque cliente pour un besoin
aussi simple. Index reconstruit après chaque synchronisation du
catalogue, page de recherche commune aux profs et aux élèves.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-14 13:24:13 +02:00

2.3 KiB

Runbook — Elasticsearch (recherche dans les cours et labs)

Instance interne, jamais exposée, consommée seulement par le portail en PHP (App\Services\Recherche\IndexRecherche). Détail des choix : ADR 0009.

Où sont les choses

Élément Emplacement
Config /etc/elasticsearch/elasticsearch.yml (sécurité x-pack désactivée, écoute 127.0.0.1 seulement)
Tas JVM /etc/elasticsearch/jvm.options.d/heap.options (512 Mo, voir ADR 0009)
Index paillasse_catalogue
Déployé par ansible/elasticsearch.yml (rôle elasticsearch, rejoue aussi portail pour écrire .env)
cd ansible && script -q /dev/null ansible-playbook elasticsearch.yml -i inventory.ini

Vérifier que ça fonctionne

systemctl is-active elasticsearch
curl -s http://127.0.0.1:9200/paillasse_catalogue/_count

Reconstruire l'index manuellement (après un changement de mapping, ou si le catalogue semble désynchronisé) :

cd /var/www/portail
sudo -u www-data HOME=/tmp php8.3 artisan recherche:indexer

Autrement, l'index se reconstruit automatiquement après labs:synchroniser et cours:synchroniser (voir ces deux commandes).

Pourquoi la RAM est surveillée

Comme pour Ceph et WebDAV (voir les runbooks correspondants) : ce serveur a réellement 31 Go de RAM, partagés avec OpenStack et le portail. Le tas JVM est volontairement limité à 512 Mo (~900 Mo de RSS au total mesuré) — ne jamais retirer heap.options ni laisser Elasticsearch calculer sa taille de tas automatiquement sur ce serveur.

Si le besoin grossit réellement

Pas de pagination ni de recherche à facettes pour l'instant (catalogue minuscule). À ajouter dans App\Services\Recherche\IndexRecherche et RechercheController si le catalogue de cours/labs grossit vraiment — jamais avant, pour ne pas construire une fonction sans usage réel.

Nettoyer entièrement (si besoin)

ssh paillasse
sudo systemctl disable --now elasticsearch
sudo rm -rf /var/lib/elasticsearch /etc/elasticsearch
sudo apt-get purge -y elasticsearch
sudo rm /etc/apt/sources.list.d/elastic-8.x.list /usr/share/keyrings/elastic.gpg
sudo apt-get update

Puis retirer ELASTICSEARCH_HOTE/ELASTICSEARCH_PORT du .env du portail et redémarrer Horizon.