Elasticsearch è un motore di ricerca e analisi full-text distribuito open source. Supporta operazioni RESTful e ti consente di archiviare, cercare e analizzare grandi volumi di dati in tempo reale.
Elasticsearch è uno dei motori di ricerca più popolari che alimenta le applicazioni che hanno requisiti di ricerca complessi come i grandi negozi di e-commerce e le applicazioni analitiche.
Questo tutorial ti guiderà attraverso il processo di installazione di Elasticsearch su Debian 9.
Prerequisiti #
Dovrai essere loggato come utente con privilegi sudo per poter installare i pacchetti sul tuo server Debian.
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.0.0
e richiede l'installazione di Java 8 sul sistema.
Inizia aggiornando l'indice dei pacchetti e installando apt-transport-https
pacchetto necessario per accedere a un repository tramite 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 di Java:
java -version
L'output dovrebbe essere simile a questo:
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-2~deb9u1-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)
Il passaggio successivo consiste nell'aggiungere il repository Elasticsearch.
Importa la chiave pubblica del repository utilizzando il seguente wget
comando:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
Il comando sopra dovrebbe restituire OK
il che significa che la chiave è stata importata correttamente e i pacchetti da questo repository saranno considerati attendibili.
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, cambia 7.x
nel 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, invia una richiesta HTTP alla porta 9200 su localhost utilizzando il seguente curl
comando:
curl -X GET "localhost:9200/"
L'output dovrebbe essere simile a questo:
{
"name" : "stretch",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "Nj2W3PswRuWvJW8JG75O1Q",
"version" : {
"number" : "7.0.0",
"build_flavor" : "default",
"build_type" : "deb",
"build_hash" : "b7e28a7",
"build_date" : "2019-04-05T22:55:32.697037Z",
"build_snapshot" : false,
"lucene_version" : "8.0.0",
"minimum_wire_compatibility_version" : "6.7.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
L'avvio del servizio potrebbe richiedere 5-10 secondi. 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 archiviati in /var/lib/elasticsearch
directory. I file di configurazione si trovano in /etc/elasticsearch
e le opzioni di avvio di Java possono essere configurate in /etc/default/elasticsearch
file.
Per impostazione predefinita, Elasticsearch è configurato per l'ascolto solo su localhost. Se anche il client che si connette al database è in esecuzione sullo stesso host e stai configurando un cluster a nodo singolo, non è necessario abilitare l'accesso remoto.
Accesso remoto #
Out of box Elasticsearch, non implementa l'autenticazione, quindi è accessibile a chiunque possa accedere all'API HTTP. Se desideri consentire l'accesso remoto al tuo server Elasticsearch, dovrai configurare il firewall e consentire l'accesso alla porta 9200 di Elasticsearch solo da client attendibili.
Se stai utilizzando UFWas, il tuo strumento firewall preferito, esegui il comando seguente per consentire la valutazione sulla porta 9200 dall'indirizzo IP attendibile remoto:
sudo ufw allow from 192.168.100.20 to any port 9200
Non dimenticare di modificare 192.168.100.20
con il tuo indirizzo IP remoto. Altrimenti, se stai usando un semplice vecchio iptables, esegui:
sudo iptables -A INPUT -p tcp -s 192.168.100.20 --dport 9200 -j ACCEPT
Una volta configurato il firewall, il passaggio successivo consiste nel modificare la configurazione e impostare Elasticsearch per l'ascolto delle connessioni esterne.
Per farlo, apri elasticsearch.yml
file di configurazione:
sudo nano /etc/elasticsearch/elasticsearch.yml
Cerca la riga che contiene network.host
, decommentalo e cambia il valore in 0.0.0.0
:
network.host: 0.0.0.0
Se hai più interfacce di rete sulla tua macchina, puoi specificare l'indirizzo IP dell'interfaccia che farà sì che Elasticsearch sia in ascolto 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.