retour appli cel
Cette commande tourne en boucle, dans un while(true) pour qu'il n'y ait pas de lag (les obs ajoutées par un widget sont directement dispos dans le cel).
Un cron se charge de vérifier toute les minutes si la tâche n'a pas planté (lecture du PID).
Script contrôlé par un cron : /home/test/synchro-es-in-a-while-true-controller.sh
Script contrôlé par le controller : /home/test/synchro-es-in-a-while-true.sh
Gestion des indexes Elasticsearch
Synchronisation automatique des indexes avec le CEL
Les services symfony du CEL alimentent directement l'index ES, mais pour toutes les autres opérations sur les tables occurrence et photos (widgets, del, etc.) des triggers allimentent la base changelog, ensuite une commande symfony lit la table changelog et ajoute/modifie les documents correspondant dans l'index ES.Cette commande tourne en boucle, dans un while(true) pour qu'il n'y ait pas de lag (les obs ajoutées par un widget sont directement dispos dans le cel).
Un cron se charge de vérifier toute les minutes si la tâche n'a pas planté (lecture du PID).
Script contrôlé par un cron : /home/test/synchro-es-in-a-while-true-controller.sh
Script contrôlé par le controller : /home/test/synchro-es-in-a-while-true.sh
Commandes utiles
Trouver les noms des indexes
Voir dans le fichier .env.local(.*) : FOS_ELASTICA_INDEXES_OCCURRENCES_INDEX_NAME et FOS_ELASTICA_INDEXES_PHOTOS_INDEX_NAMEVĂ©rifier les logs des services Symfony
tail -f /home/test/www/cel2-services/var/log/prod.logDébloquer les indexes (ex : après un disque plein)
Si on trouve l'erreur du genre ` blocked by: [FORBIDDEN/12/index read-only / allow delete` il faut lancer ça :curl -X PUT http://10.99.34.13:9200/cel2_photos/_settings -H 'Content-Type: application/json' -d '{ "index.blocks.read_only_allow_delete": null }'
curl -X PUT http://10.99.34.13:9200/cel2_occurrences/_settings -H 'Content-Type: application/json' -d '{ "index.blocks.read_only_allow_delete": null }'
Lancement manuel
Pour lancer la commande à la main, depuis le répertoire des services du cel :php bin/console cel:sync-es
Lister les indexes
curl http://10.99.34.13:9200/_aliases?pretty=true
curl http://10.99.34.13:9200/_cat/indices?pretty=true
Consulter un index
curl -X POST -H 'Content-Type: application/json' http://10.99.34.13:9200/cel2_occurrences/_search?pretty -d '{"query":{"bool":{"must":{"match": {"id":3605063}}}}}'
Remplir des index
Pour vider les index et les reremplir à partir des données en base :bin/console fos:elastica:populate [--ignore-errors]
Vider des index
(ne devrait pas être très utile)curl -X DELETE 10.99.34.13:9200/cel2_photos/ curl -X DELETE 10.99.34.13:9200/cel2_occurrences/
Sauvegarde et restauration des indexes
#create backup dir on server mkdir /etc/elasticsearch/backup chown elasticsearch /etc/elasticsearch/backup #register backup dir in config cat >> /etc/elasticsearch/elasticsearch.yml << EOF path.repo: ["/etc/elasticsearch/backup"] EOF #restart ES to take account of new config systemctl restart elasticsearch #register backup dir in ES curl -XPUT 'http://10.99.34.13:9200/_snapshot/full_backup' -H 'Content-Type: application/json' -d '{"type": "fs","settings": {"location": "/etc/elasticsearch/backup","compress": true}}' #create backup curl -XPUT 'http://10.99.34.13:9200/_snapshot/full_backup/snapshot_1?wait_for_completion=true' #list backup curl -XGET 'http://10.99.34.13:9200/_snapshot/full_backup/_all?pretty' #restore backup curl -XPOST 'http://10.99.34.13:9200/_snapshot/full_backup/snapshot_1/_restore?wait_for_completion=true' #in case of error, close indexes before backup or restore curl -XPOST 'http://10.99.34.13:9200/cel_occurrences/_close' curl -XPOST 'http://10.99.34.13:9200/cel_photos/_close' #sources https://z0z0.me/how-to-create-snapshot-and-restore-snapshot-with-elasticsearch/ https://blog.zwindler.fr/2018/07/04/sauvegarder-et-restaurer-des-index-dans-elasticsearch/