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 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 CentOS 7.
Prerequisiti #
L'utente con cui hai effettuato l'accesso deve disporre dei privilegi sudo per poter installare i pacchetti.
Installazione di Elasticsearch #
Il modo consigliato per installare Elasticsearch su CentOS 7 è installare il pacchetto rpm dal repository ufficiale di Elasticsearch.
Al momento della stesura di questo articolo, l'ultima versione di Elasticsearch è 6.7
e richiede Java 8 o successivo.
Per installare OpenJDK8 sul tuo sistema CentOS, digita:
sudo yum install java-1.8.0-openjdk-devel
Verifica l'installazione di Java stampando la versione di Java:
java -version
L'output dovrebbe essere simile a questo:
openjdk version "1.8.0_201"
OpenJDK Runtime Environment (build 1.8.0_201-b09)
OpenJDK 64-Bit Server VM (build 25.201-b09, mixed mode)
Ora che Java è installato, il passaggio successivo consiste nell'aggiungere il repository Elasticsearch.
Importa la chiave GPG del repository utilizzando il seguente comando:
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Apri il tuo editor di testo e crea il seguente file repository:
sudo nano /etc/yum.repos.d/elasticsearch.repo
Incolla il seguente contenuto nel file:
/etc/yum.repos.d/elasticsearch.repo[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
Salva il file e chiudi il tuo editor di testo.
Se desideri installare una versione precedente di Elasticsearch, modifica6.x
nel comando sopra con la versione che ti serve. Ora puoi installare il pacchetto Elasticsearch digitando:
sudo yum install elasticsearch
Una volta completato il processo di installazione, avvia e abilita il servizio eseguendo:
sudo systemctl enable elasticsearch.service
sudo systemctl start elasticsearch.service
Puoi verificare che Elasticsearch sia in esecuzione inviando una richiesta HTTP alla porta 9200 su localhost con il seguente comando curl:
curl -X GET "localhost:9200/"
L'output sarà simile al seguente:
{
"name" : "fLVNqN_",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "6zKcQppYREaRH0tyfJ9j7Q",
"version" : {
"number" : "6.7.0",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "8453f77",
"build_date" : "2019-03-21T15:32:29.844721Z",
"build_snapshot" : false,
"lucene_version" : "7.7.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"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 puoi utilizzare il comando seguente:
sudo journalctl -u elasticsearch
A questo punto, Elasticsearch è installato sul tuo server CentOS.
Configurazione di Elasticsearch #
I dati di Elasticsearch sono archiviati in /var/lib/elasticsearch
directory, i file di configurazione si trovano in /etc/elasticsearch
.
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 di nodo singolo, non è necessario modificare il file di configurazione predefinito.
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.
A partire da CentOS 7, FirewallDreplaces iptables come strumento di gestione del firewall predefinito.
Esegui il comando seguente per consentire la valutazione dall'indirizzo IP attendibile remoto sulla porta 9200
:
Non dimenticare di modificaresudo firewall-cmd --new-zone=elasticsearch --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --zone=elasticsearch --add-source=192.168.121.80/32 --permanent
sudo firewall-cmd --zone=elasticsearch --add-port=9200/tcp --permanent
sudo firewall-cmd --reload
192.168.121.80
con il tuo indirizzo IP remoto. Successivamente, se desideri consentire l'accesso da un altro indirizzo IP, utilizza:
sudo firewall-cmd --zone=elasticsearch --add-source=<IP_ADDRESS> --permanent
sudo firewall-cmd --reload
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, 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
Questo è tutto. Ora puoi connetterti al server Elasticsearch dalla tua posizione remota.