Introduzione

Elasticsearch è un motore di ricerca e analisi full-text distribuito open source. Supporta operazioni RESTful e consente di archiviare, cercare e analizzare grandi volumi di dati in tempo reale. Elasticsearch è uno dei motori di ricerca più popolari che alimentano applicazioni che presentano requisiti di ricerca complessi come grandi negozi di e-commerce e applicazioni analitiche.

Questo tutorial copre l'installazione di Elasticsearch su CentOS 8.

Se desideri installare Elasticsearch su un server in remoto continua a leggere, altrimenti salta il primo paragrafo "Connessione al Server" e leggi il successivo.

Connessione al Server

Per accedere al server, è necessario conoscere l'indirizzo IP. Avrai anche bisogno dell'username e della password per l'autenticazione. Per connettersi al server come utente root digitare il seguente comando:

ssh [email protected]_DEL_SERVER

Successivamente sarà necessario inserire la password dell'utente root.

Se non utilizzate l'utente root potete connettervi con un'altro nome utente utilizzando lo stesso comando, quindi modificare root con il vostro nome_utente:

ssh [email protected]_DEL_SERVER

Successivamente vi verrà chiesto di inserire la password del vostro utente.

La porta standard per connettersi tramite ssh è la 22, se il vostro server utilizza una porta diversa, sarà necessario specificarla utilizzando il parametro -p, quindi digitare il seguente comando:

ssh [email protected]_DEL_SERVER -p PORTA

Installare Java

Elasticsearch è un'applicazione Java, quindi il primo passo è installare Java.

Eseguire il comando come utente root o utente con il comando sudo per installare il pacchetto OpenJDK:

sudo dnf install java-11-openjdk-devel

Verifica l'installazione di Java stampando la versione Java:

java -version

L'output dovrebbe assomigliare a questo:

openjdk version "11.0.5" 2019-10-15 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.5+10-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.5+10-LTS, mixed mode, sharing)

Installare Elasticsearch

Elasticsearch non è disponibile nei repository standard CentOS 8. Lo installeremo dal repository RPM di Elasticsearch.

Importa il GPG del repository usando il comando rpm:

sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Apri il tuo editor di testo e crea il file repository nella directory /etc/yum.repos.d/:

sudo vi /etc/yum.repos.d/elasticsearch.repo

Incolla il seguente contenuto nel file:

[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

Salvare il file e chiudere l'editor di testo.

Al momento della stesura di questo articolo, l'ultima versione di Elasticsearch è 7.6. Se desideri installare una versione precedente di Elasticsearch, modifica 7.x con la versione di cui hai bisogno.

Ora che il repository è abilitato, installa il pacchetto Elasticsearch digitando:

sudo dnf install elasticsearch

Una volta completato il processo di installazione, avviare e abilitare il servizio:

sudo systemctl enable elasticsearch.service --now

Per verificare che Elasticsearch sia in esecuzione, utilizzare curl per inviare una richiesta HTTP alla porta 9200 su localhost:

curl -X GET "localhost:9200/"

L'output sarà simile al seguente:

{
  "name" : "TEST-SERVER-1",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "PT16lhJVQiaMPxKMYoXrDg",
  "version" : {
    "number" : "7.6.0",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "7f634e9f44834fbc12724506cc1da681b0c3b1e3",
    "build_date" : "2020-02-06T00:09:00.449973Z",
    "build_snapshot" : false,
    "lucene_version" : "8.4.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

Potrebbero essere necessari 5-10 secondi per l'avvio del servizio. Se vedi curl: (7) Failed to connect to localhost port 9200: Connection refused, attendi qualche secondo e riprova.

Per visualizzare i messaggi registrati dal servizio Elasticsearch, utilizzare il comando seguente:

sudo journalctl -u elasticsearch

A questo punto, hai installato Elasticsearch sul tuo server CentOS.

Configurare Elasticsearch

I dati di Elasticsearch sono memorizzati nella directory /var/lib/elasticsearch, i file di configurazione si trovano in /etc/elasticsearch.

Per impostazione predefinita, Elasticsearch è configurato per l'ascolto solo su localhost. Se il client che si collega al database è in esecuzione sullo stesso host e si sta configurando un cluster a nodo singolo, non è necessario modificare il file di configurazione predefinito.

Accesso remoto

Elasticsearch, di default non implementa l'autenticazione, quindi può accedervi chiunque possa accedere all'API HTTP. Se si desidera consentire l'accesso remoto al server Elasticsearch, sarà necessario configurare il firewall e consentire l'accesso alla porta 9200 di Elasticsearch solo da client attendibili.

Ad esempio, per consentire solo connessioni da 192.168.222.222, immettere i comandi seguenti.

Eseguire il comando seguente per consentire la valutazione dall'indirizzo IP attendibile remoto sulla porta 9200:

sudo firewall-cmd --new-zone=elasticsearch --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --zone=elasticsearch --add-source=192.168.222.222/32 --permanent
sudo firewall-cmd --zone=elasticsearch --add-port=9200/tcp --permanent
sudo firewall-cmd --reload

Non dimenticare di cambiare 192.168.222.222 con il tuo indirizzo IP remoto.

Successivamente, se si desidera consentire l'accesso da un altro indirizzo IP, utilizzare:

sudo firewall-cmd --zone=elasticsearch --add-source=<IP_ADDRESS> --permanent

Una volta configurato il firewall, il passaggio successivo è modificare la configurazione di Elasticsearch e consentire a Elasticsearch di ascoltare le connessioni esterne.

Per fare ciò, apri il file di configurazione elasticsearch.yml:

sudo nano /etc/elasticsearch/elasticsearch.yml

Cerca la riga che contiene network.host, decommentala e modifica il valore in 0.0.0.0:

network.host: 0.0.0.0

Successivamente cerca la riga che contiene discovery.seed_hosts: ['host1', ..], decommentala e modifica il valore in in questo modo:

discovery.seed_hosts: []

Salva e chiudi il file.

Se sul tuo computer sono presenti più interfacce di rete, specifica l'indirizzo IP dell'interfaccia per forzare Elasticsearch ad ascoltare solo l'interfaccia fornita.

Riavvia il servizio Elasticsearch per rendere effettive le modifiche:

sudo systemctl restart elasticsearch

Questo è tutto. Ora puoi connetterti al server Elasticsearch dalla posizione remota.

Conclusione

Ti abbiamo mostrato come installare Elasticsearch su CentOS 8.

Per ulteriori informazioni su Elasticsearch, visitare la pagina della documentazione ufficiale.