Elasticsearch è un motore di ricerca basato su Lucene. Il programma compilato in Java salva i dati in un formato NoSQL (JSON). La comunicazione con i client avviene tramite un’API RESTful. Insieme a Solr, Elasticsearch è il motore di ricerca più diffuso al mondo. Il presente articolo descrive in che modo potete installare e utilizzare Elasticsearch sul vostro Managed Flex Server.
Requisiti
Elasticsearch può essere attivato a partire da Managed Flex Server M.
Installazione
Per ordinare le vostre applicazioni vi consigliamo di creare una cartella ~/app/ e, al suo interno, una sottocartella per ciascuna applicazione. In questo modo avrete sempre un perfetto ordine e una panoramica chiara. Per Elasticsearch creiamo quindi la cartella ~/app/elasticsearch.
mkdir -p ~/app/elasticsearch
Innanzitutto, installate la versione desiderata (la più recente) di Elasticsearch. Le versioni sono disponibili sul sito di elastic. Selezionate la versione per LINUX X86_64. Estraete il contenuto dell’archivio nella directory creata in precedenza.
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-X.X.X.tar.gz -O /tmp/elastic.tar.gz
tar -xzf /tmp/elastic.tar.gz -C ~/app/elasticsearch
rm -rf /tmp/elastic.tar.gz
cd ~/app/elasticsearch
ln -s elasticsearch-X.X.X current
Dopodiché Elasticsearch sarà disponibile nella cartella ~/app/elasticsearch/current/. Utilizzando il collegamento simbolico corrente è facile eseguire e gestire installazioni parallele in modo corretto e ordinato, ad esempio in caso di aggiornamenti per le versioni più recenti.
Java è preinstallato sul vostro Managed Flex Server.
Affinché Elasticsearch possa trovare OpenJDK, è necessario eseguire i seguenti comandi:
echo 'export ES_JAVA_HOME="/usr/local/openjdk17"' >> ~/.profile
echo 'export ES_JAVA_OPTS="-Xms1g -Xmx1g"' >> ~/.profile
source ~/.profile
Configurazione di Elasticsearch
La configurazione di Elasticsearch viene eseguita nel file config/elasticsearch.yml all’interno della vostra directory Elasticsearch. Il file è commentato in modo esaustivo ed è dotato di indicazioni relative alle opzioni.
- Percorsi
- Occupatevi soprattutto dei percorsi ai dati (path.data) e ai log (path.logs). Riguardo a questi ultimi, assicuratevi che vengano eliminati periodicamente e che non riempiano improvvisamente il vostro spazio web. Per impostazione predefinita entrambi vengono registrati in una relativa sottodirectory della cartella dell’installazione.
- Rete
- Per impostazione predefinita l’API REST di Elasticsearch è disponibile all’indirizzo IP 127.0.0.1 sulla porta 9200 (porta 9300 per la comunicazione Node). Solitamente non sono necessarie modifiche. Per motivi di sicurezza, tuttavia, non collegatevi mai a un indirizzo IP aperto!
- X-Pack
- Poiché X-Pack non è supportato su FreeBSD (così come su diverse altre piattaforme), è necessario disattivarlo nella configurazione. Modificate il file di configurazione con un editor di testo a vostra scelta o aggiungete direttamente la configurazione corrispondente tramite la shell:
echo -e "\n\n# disable xpack as it is not supported on FreeBSD, $USER, $(date)\nxpack.ml.enabled: false" >> ~/app/elasticsearch/current/config/elasticsearch.yml
- Disk Watermark
- Il limite per la quantità minima di spazio di memoria è impostato come standard percentuale e a causa della grande quantità di spazio di memoria, reagisce troppo presto. I valori dovrebbero quindi essere definiti in GB.
echo -e "\n\n# adjust low disk watermark, $USER, $(date)\ncluster.routing.allocation.disk.watermark.low: 20G" >> ~/app/elasticsearch/current/config/elasticsearch.yml echo -e "\n\n# adjust high disk watermark, $USER, $(date)\ncluster.routing.allocation.disk.watermark.high: 10G" >> ~/app/elasticsearch/current/config/elasticsearch.yml echo -e "\n\n# adjust watermark flood stage, $USER, $(date)\ncluster.routing.allocation.disk.watermark.flood_stage: 5G" >> ~/app/elasticsearch/current/config/elasticsearch.yml
Avvio di Elasticsearch
Se avete installato e configurato correttamente Elasticsearch, potete avviare il servizio con ~/app/elasticsearch/current/bin/elasticsearch al fine di eseguire un test:
./bin/elasticsearch
Edizioni di elasticsearch
Ricordate che può essere necessario attendere fino a mezzo minuto prima che Elasticsearch sia avviato e pronto all’uso.
Per maggiori dettagli e ulteriori possibilità di configurazione di Elasticsearch fate riferimento alla documentazione ufficiale di Elasticsearch.
Integrazione
Funzionamento con il Custom Service Control
Finora avete avviato Elasticsearch manualmente tramite la shell. Se questa operazione può rappresentare una semplice soluzione per i test e per lo sviluppo, non lo è per il funzionamento. Il Custom Service Control (CSC) si può occupare del funzionamento e della gestione automatica di Elastic, ad esempio dell’avvio e dell’arresto in caso di interventi di manutenzione sul server.
La configurazione nel CSC è molto semplice. Create dunque un nuovo custom service per Elasticsearch:
hpservices supervisord add elasticsearch
successfully created dir for elasticsearch: /home/username/.services/supervisord/elasticsearch
successfully created dir for elasticsearch: /home/username/.services/supervisord/elasticsearch/log
supervisord service config file written: /home/username/.services/supervisord/elasticsearch/service.conf
Nel file ~/.services/supervisord/elasticsearch/service.conf viene creato uno schema di configurazione per il nuovo servizio. Per Elasticsearch il command deve essere regolato e Environment Variable deve essere aggiunta, altrimenti si possono accettare tutti i valori suggeriti (rimuovere il punto e virgola all'inizio della riga).
[program:elasticsearch]
command=%(ENV_HOME)s/app/elasticsearch/current/bin/elasticsearch ; the program (can take args)
directory=%(ENV_HOME)s/app/elasticsearch/ ; directory to cwd to before exec (default no cwd)
autostart=true ; start application at supervisord start (default: true)
stopwaitsecs=10 ; max num secs to wait before SIGKILL (default 10)
stdout_logfile=%(ENV_HOME)s/.services/supervisord/elasticsearch/log/default.log
stdout_logfile_maxbytes=1MB ; filesize at which to rotate logfiles (default ist 50MB)
stdout_logfile_backups=10 ; number of stdout logfile backups (0 means none, default 10)
stderr_logfile=%(ENV_HOME)s/.services/supervisord/elasticsearch/log/default.err
stderr_logfile_maxbytes=1MB ; filesize at which to rotate logfiles (default is 50MB)
stderr_logfile_backups=10 ; number of stderr logfile backups (0 means none, default 10)
environment=ES_JAVA_HOME="/usr/local/openjdk17",ES_JAVA_OPTS="-Xms1g -Xmx1g"
Con supervisorctl update potete attivare la nuova configurazione per il servizio Elasticsearch:
supervisorctl update
elasticsearch: added process group
Attenzione: Se si verifica un errore, è necessario eseguire prima di tutto "hpservices supervisord start" una volta.
Per informazioni più dettagliate sull’uso e sulle possibilità disponibili con il CSC fate riferimento alla guida al Custom Service Control.
Per richieste di supporto la preghiamo di usare invece questo modulo.