Elasticsearch es un motor de análisis y búsqueda de texto completo distribuido de código abierto. Admite operaciones RESTful y le permite almacenar, buscar y analizar grandes volúmenes de datos en tiempo real. Elasticsearch es uno de los motores de búsqueda más populares que impulsa aplicaciones que tienen requisitos de búsqueda complejos, como grandes tiendas de comercio electrónico y aplicaciones analíticas.
Este tutorial cubre la instalación de Elasticsearch en CentOS 8.
Instalando Java #
Elasticsearch es una aplicación Java, por lo que el primer paso es instalar Java.
Ejecute lo siguiente como root o usuario con el comando sudo privilegios para instalar el paquete OpenJDK:
sudo dnf install java-11-openjdk-devel
Verifique la instalación de Java imprimiendo la versión de Java:
java -version
La salida debería verse así:
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)
Instalando Elasticsearch #
Elasticsearch no está disponible en los repositorios estándar de CentOS 8. Lo instalaremos desde el repositorio RPM de Elasticsearch.
Importa el GPG del repositorio usando el rpm
comando:
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Abra su editor de texto y cree el archivo de repositorio /etc/yum.repos.d
directorio:
sudo nano /etc/yum.repos.d/elasticsearch.repo
Pegue el siguiente contenido en el archivo:
/etc/yum.repos.d/elasticsearch.repo[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
Guarde el archivo y cierre su editor de texto.
Al momento de escribir este artículo, la última versión de Elasticsearch es7.6
. Si desea instalar una versión anterior de Elasticsearch, cambie 7.x
en el comando anterior con la versión que necesita. Ahora que el repositorio está habilitado, instale el paquete Elasticsearch escribiendo:
sudo dnf install elasticsearch
Una vez que se complete el proceso de instalación, inicie y habilite el servicio:
sudo systemctl enable elasticsearch.service --now
Para verificar que Elasticsearch se está ejecutando, use curl
para enviar una solicitud HTTP al puerto 9200 en localhost:
curl -X GET "localhost:9200/"
La salida se verá así:
{
"name" : "centos8.localdomain",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "V_mfjn2PRJqX3PlZb_VD7w",
"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"
}
El servicio puede tardar entre 5 y 10 segundos en iniciarse. Si ve curl: (7) Failed to connect to localhost port 9200: Connection refused
, espera unos segundos y vuelve a intentarlo.
Para ver los mensajes registrados por el servicio Elasticsearch, use el siguiente comando:
sudo journalctl -u elasticsearch
En este punto, tiene instalado Elasticsearch en su servidor CentOS.
Configurando Elasticsearch #
Los datos de Elasticsearch se almacenan en /var/lib/elasticsearch
directorio, los archivos de configuración se encuentran en /etc/elasticsearch
.
De manera predeterminada, Elasticsearch está configurado para escuchar solo en localhost. Si el cliente que se conecta a la base de datos también se ejecuta en el mismo host y está configurando un clúster de un solo nodo, no necesita cambiar el archivo de configuración predeterminado.
Acceso Remoto #
Elasticsearch, listo para usar, no implementa la autenticación, por lo que cualquiera que pueda acceder a la API HTTP puede acceder a él. Si desea permitir el acceso remoto a su servidor de Elasticsearch, deberá configurar su firewall y permitir el acceso al puerto 9200 de Elasticsearch solo desde clientes de confianza.
Por ejemplo, para permitir conexiones solo desde 192.168.121.80
, ingrese el siguiente comando:
Ejecute el siguiente comando para permitir la evaluación desde la dirección IP remota de confianza en el puerto 9200
:
No olvides cambiarsudo 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 su dirección IP remota. Más adelante, si desea permitir el acceso desde otra dirección IP, use:
sudo firewall-cmd --zone=elasticsearch --add-source=<IP_ADDRESS> --permanent
sudo firewall-cmd --reload
Una vez que se configura el firewall, el siguiente paso es editar la configuración de Elasticsearch y permitir que Elasticsearch escuche las conexiones externas.
Para hacerlo, abra el elasticsearch.yml
archivo de configuración:
sudo nano /etc/elasticsearch/elasticsearch.yml
Busque la línea que contiene network.host
, descoméntelo y cambie el valor a 0.0.0.0
:
network.host: 0.0.0.0
Si tiene varias interfaces de red en su máquina, especifique la dirección IP de la interfaz para obligar a Elasticsearch a escuchar solo la interfaz dada.
Reinicie el servicio Elasticsearch para que los cambios surtan efecto:
sudo systemctl restart elasticsearch
Eso es todo. Ahora puede conectarse al servidor de Elasticsearch desde la ubicación remota.