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 ti guiderà attraverso il processo di installazione di Elasticsearch su Debian 10.

Prerequisiti

Devi essere loggato come utente con i privilegi di sudo per poter installare i pacchetti sul tuo server Debian 10.

Se il tuo intento è 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]IP_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

Installazione di Elasticsearch

Il modo più semplice per installare Elasticsearch su Debian è tramite il repository ufficiale di Elasticsearch. Al momento della stesura di questo articolo, l'ultima versione di Elasticsearch è 7.5.0.

Inizia aggiornando l'indice dei pacchetti e installando il pacchetto apt-transport-https necessario per accedere a un repository su HTTPS:

sudo apt update
sudo apt install apt-transport-https

Installa OpenJDK 8:

sudo apt install openjdk-8-jdk

Verifica l'installazione di Java stampando la versione Java:

java -version

L'output dovrebbe assomigliare a questo:

openjdk version "1.8.0_232"
OpenJDK Runtime Environment (build 1.8.0_232-8u232-b09-0ubuntu1~18.04.1-b09)
OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode)

Il prossimo passo è aggiungere il repository Elasticsearch.

Importa la chiave pubblica del repository usando il comando wget seguente:

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

Il comando sopra dovrebbe generare OK come output, il che significa che la chiave è stata importata con successo e i pacchetti da questo repository saranno considerati affidabili.

Successivamente, aggiungi il repository Elasticsearch al sistema eseguendo:

sudo sh -c 'echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" > /etc/apt/sources.list.d/elastic-7.x.list'

Se desideri installare una versione diversa di Elasticsearch, modifica il parametro 7.x al comando sopra con la versione che ti serve.

Aggiorna l'indice dei pacchetti e installa il motore Elasticsearch:

sudo apt update
sudo apt install elasticsearch

Al termine del processo di installazione, avviare e abilitare il servizio utilizzando i seguenti comandi:

sudo systemctl enable elasticsearch.service
sudo systemctl start elasticsearch.service

Per verificare che Elasticsearch sia in esecuzione, inviare una richiesta HTTP alla porta 9200 su localhost utilizzando il seguente comando curl:

curl -X GET "localhost:9200/"

L'output dovrebbe essere simile al seguente:

{
  "name" : "TEST-SERVER-1",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "CVjvDx8NTyGy74sKjRUCEQ",
  "version" : {
    "number" : "7.5.1",
    "build_flavor" : "default",
    "build_type" : "deb",
    "build_hash" : "3ae9ac9a93c95bd0cdc054951cf95d88e1e18d96",
    "build_date" : "2019-12-16T22:57:37.835892Z",
    "build_snapshot" : false,
    "lucene_version" : "8.3.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

Questo è tutto. Elasticsearch è stato installato sul tuo server Debian.

Configurazione di Elasticsearch

I dati di Elasticsearch sono memorizzati nella directory /var/lib/elasticsearch. I file di configurazione si trovano in /etc/elasticsearch e le opzioni di avvio di Java possono essere configurate nel file /etc/default/elasticsearch.

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

Accesso remoto

Out of box Elasticsearch, non implementa l'autenticazione, quindi può accedervi da 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.

Se si utilizza UFW come strumento firewall preferito, eseguire il comando seguente per consentire la valutazione sulla porta 9200 dall'indirizzo IP attendibile remoto:

sudo ufw allow from 192.168.222.22 to any port 9200

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

Altrimenti, se si utilizza semplicemente la vecchia iptables utilizzare il seguente comando per abilitare la porta:

sudo iptables -A INPUT -p tcp -s 192.168.222.22 --dport 9200 -j ACCEPT

Una volta configurato il firewall, il passaggio successivo è modificare la configurazione e impostare Elasticsearch in modo che ascolti 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

Se sul tuo computer sono presenti più interfacce di rete, puoi specificare l'indirizzo IP dell'interfaccia che farà sì che Elasticsearch ascolti solo sull'interfaccia specificata.

Riavvia il servizio Elasticsearch per rendere effettive le modifiche:

sudo systemctl restart elasticsearch

A questo punto, dovresti essere in grado di connetterti al server Elasticsearch dalla tua posizione remota.

Conclusione

Hai installato Elasticsearch con successo sul tuo sistema Debian 10. Per ulteriori informazioni su come iniziare con Elasticsearch, visitare la pagina della documentazione ufficiale.