Paillasse/docs/runbooks/elasticsearch.md

65 lines
2.3 KiB
Markdown
Raw Normal View History

# 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.