Elasticsearch è un motore di ricerca e analisi full-text distribuito open source. Supporta le 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 alimenta le applicazioni che hanno requisiti di ricerca complessi come i grandi negozi di e-commerce e le applicazioni analitiche.
Questo tutorial spiega come installare Elasticsearch su Debian 10.
Installazione di Java #
Elasticsearch è un'applicazione Java, quindi il primo passo è installare Java.
Eseguire quanto segue come utente root o utente con sudo privilegicommand per installare il pacchetto OpenJDK:
sudo apt install default-jdk
Verifica l'installazione di Java stampando la versione di Java:
java -version
L'output dovrebbe essere simile a questo:
openjdk version "11.0.6" 2020-01-14
OpenJDK Runtime Environment (build 11.0.6+10-post-Debian-1deb10u1)
OpenJDK 64-Bit Server VM (build 11.0.6+10-post-Debian-1deb10u1, mixed mode, sharing)
Installazione di Elasticsearch #
Elasticsearch non è disponibile nei repository Debian 10 standard. Lo installeremo dal repository APT di 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.
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'
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
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
Una volta completato il processo di installazione, avvia e abilita il servizio:
sudo systemctl enable elasticsearch.service --now
Per verificare che Elasticsearch sia in esecuzione, utilizza curl
per inviare una richiesta HTTP alla porta 9200 su localhost:
curl -X GET "localhost:9200/"
L'output sarà simile a questo:
{
"name" : "debian10.localdomain",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "yCOOHdvYR8mHRs5mNXQdDQ",
"version" : {
"number" : "7.6.1",
"build_flavor" : "default",
"build_type" : "deb",
"build_hash" : "aa751e09be0a5072e8570670309b1f12348f023b",
"build_date" : "2020-02-29T00:15:25.529771Z",
"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"
}
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 seguente comando:
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 modificare il file di configurazione predefinito.
Accesso remoto #
Out of box Elasticsearch, non implementa l'autenticazione, quindi può accedervi 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.
Ad esempio, se stai usando UFW e vuoi consentire le connessioni solo da 192.168.121.80
, inserisci il seguente comando:
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. Una volta configurato il firewall, il passaggio successivo consiste nel modificare la configurazione di Elasticsearch e consentire a Elasticsearch di ascoltare le 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, specifica l'indirizzo IP dell'interfaccia per forzare Elasticsearch ad ascoltare solo l'interfaccia data.
Riavvia il servizio Elasticsearch per rendere effettive le modifiche:
sudo systemctl restart elasticsearch
Questo è tutto. Ora puoi connetterti al server Elasticsearch dalla posizione remota.