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>
This commit is contained in:
parent
e549f03e1b
commit
777dd1cbc8
20 changed files with 545 additions and 0 deletions
64
docs/runbooks/elasticsearch.md
Normal file
64
docs/runbooks/elasticsearch.md
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
# 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.
|
||||
Loading…
Add table
Add a link
Reference in a new issue