# 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](../adr/0009-elasticsearch-interne-sans-securite.md). ## 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.