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 lo guiará a través del proceso de instalación de Elasticsearch en Debian 9.
Requisitos previos #
Deberá iniciar sesión como usuario con privilegios sudo para poder instalar paquetes en su servidor Debian.
Instalando Elasticsearch #
La forma más fácil de instalar Elasticsearch en Debian es a través del repositorio oficial de Elasticsearch. Al momento de escribir este artículo, la última versión de Elasticsearch es 7.0.0
y requiere la instalación de Java 8 en el sistema.
Comience actualizando el índice de paquetes e instalando apt-transport-https
paquete necesario para acceder a un repositorio a través de HTTPS:
sudo apt update
sudo apt install apt-transport-https
Instalar OpenJDK 8:
sudo apt install openjdk-8-jdk
Verifique la instalación de Java imprimiendo la versión de Java:
java -version
La salida debería verse así:
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)
El siguiente paso es agregar el repositorio de Elasticsearch.
Importe la clave pública del repositorio usando el siguiente wget
comando:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
El comando anterior debería mostrar OK
lo que significa que la clave se ha importado correctamente y los paquetes de este repositorio se considerarán de confianza.
A continuación, agregue el repositorio de Elasticsearch al sistema ejecutando:
sudo sh -c 'echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" > /etc/apt/sources.list.d/elastic-7.x.list'
Si desea instalar una versión diferente de Elasticsearch, cambie 7.x
en el comando anterior con la versión que necesita. Actualice el índice de paquetes e instale el motor Elasticsearch:
sudo apt update
sudo apt install elasticsearch
Cuando se complete el proceso de instalación, inicie y habilite el servicio usando los siguientes comandos:
sudo systemctl enable elasticsearch.service
sudo systemctl start elasticsearch.service
Para verificar que Elasticsearch se está ejecutando, envíe una solicitud HTTP al puerto 9200 en localhost usando el siguiente curl
comando:
curl -X GET "localhost:9200/"
El resultado debería ser similar a esto:
{
"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"
}
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
Eso es todo. Elasticsearch se ha instalado en su servidor Debian.
Configurando Elasticsearch #
Los datos de Elasticsearch se almacenan en /var/lib/elasticsearch
directorio. Los archivos de configuración se encuentran en /etc/elasticsearch
y las opciones de inicio de Java se pueden configurar en /etc/default/elasticsearch
archivo.
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 habilitar el acceso remoto.
Acceso Remoto #
Elasticsearch, listo para usar, no implementa la autenticación, por lo que cualquier persona que pueda acceder a la API HTTP puede acceder a ella. 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.
Si está utilizando UFW como su herramienta de firewall preferida, ejecute el siguiente comando para permitir la evaluación en el puerto 9200 desde la dirección IP remota de confianza:
sudo ufw allow from 192.168.100.20 to any port 9200
No olvide cambiar 192.168.100.20
con su dirección IP remota. De lo contrario, si está utilizando iptables simples, ejecute:
sudo iptables -A INPUT -p tcp -s 192.168.100.20 --dport 9200 -j ACCEPT
Una vez que su firewall esté configurado, el siguiente paso es editar la configuración y configurar Elasticsearch para escuchar 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, puede especificar la dirección IP de la interfaz que hará que Elasticsearch escuche solo en la interfaz especificada.
Reinicie el servicio Elasticsearch para que los cambios surtan efecto:
sudo systemctl restart elasticsearch
En este punto, debería poder conectarse al servidor de Elasticsearch desde su ubicación remota.