Cómo instalar y utilizar Elasticsearch en Ubuntu 20.04

Elasticsearch es un motor de análisis distribuido de código abierto basado en Apache Lucene. Toma datos no estructurados de distintas ubicaciones, los almacena según la asignación especificada por el usuario y los indexa. Admite operaciones RESTful y te permite buscar y analizar enormes volúmenes de datos en tiempo real.

En este tutorial, te mostraremos cómo instalar Elasticsearch en Ubuntu 20.04.

Requisitos previos

  • Un servidor que ejecute Ubuntu 20.04.
  • Una contraseña de root configurada en el servidor.

Cómo empezar

Antes de empezar, necesitarás actualizar tu sistema a la última versión. Puedes actualizarlo con el siguiente comando:

apt-get update -y

Una vez actualizado tu sistema, instala otros paquetes necesarios con el siguiente comando:

apt-get install curl gnupg2 apt-transport-https unzip -y

Una vez instalados todos los paquetes, puedes pasar al siguiente paso.

Instalar Elasticsearch

Por defecto, el paquete Elasticsearch no está disponible en el repositorio por defecto de Ubuntu. Así que tendrás que añadir el repositorio de Elasticsearch a tu sistema. Primero, importa la clave GPG con el siguiente comando:

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -

A continuación, añade el repositorio de Elasticsearch con el siguiente comando:

sh -c 'echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" > /etc/apt/sources.list.d/elastic-7.x.list'

Una vez añadido el repositorio, actualiza la caché del repositorio e instala Elasticsearch con el siguiente comando:

apt-get update -y
apt-get install elasticsearch -y

Una vez finalizada la instalación, inicia el servicio Elasticsearch y habilítalo para que se inicie al reiniciar el sistema:

systemctl start elasticsearch
systemctl enable elasticsearch

Ahora puedes verificar el estado del servicio Elasticsearch con el siguiente comando:

systemctl status elasticsearch

Deberías obtener la siguiente salida:

? elasticsearch.service - Elasticsearch
     Loaded: loaded (/lib/systemd/system/elasticsearch.service; disabled; vendor preset: enabled)
     Active: active (running) since Sat 2021-01-09 11:13:09 UTC; 5s ago
       Docs: https://www.elastic.co
   Main PID: 5110 (java)
      Tasks: 65 (limit: 2353)
     Memory: 1.2G
     CGroup: /system.slice/elasticsearch.service
             ??5110 /usr/share/elasticsearch/jdk/bin/java -Xshare:auto -Des.networkaddress.cache.ttl=60 -Des.networkaddress.cache.negative.ttl>
             ??5304 /usr/share/elasticsearch/modules/x-pack-ml/platform/linux-x86_64/bin/controller

Jan 09 11:12:50 ubuntu2004 systemd[1]: Starting Elasticsearch...
Jan 09 11:13:09 ubuntu2004 systemd[1]: Started Elasticsearch.

Verificar Elasticsearch

Por defecto, Elasticsearch escucha en el puerto 9200. Puedes verificarlo con el siguiente comando:

ss -antpl | grep 9200

Deberías obtener la siguiente salida:

LISTEN   0        4096        [::ffff:127.0.0.1]:9200                  *:*       users:(("java",pid=5110,fd=257))                                               
LISTEN   0        4096                     [::1]:9200               [::]:*       users:(("java",pid=5110,fd=255))     

También puedes verificar Elasticsearch utilizando el siguiente comando:

curl -X GET "localhost:9200/"

Deberías obtener la siguiente respuesta:

{
  "name" : "ubuntu2004",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "mToloP2UQGilY7nUCeBnjg",
  "version" : {
    "number" : "7.10.1",
    "build_flavor" : "default",
    "build_type" : "deb",
    "build_hash" : "1c34507e66d7db1211f66f3513706fdf548736aa",
    "build_date" : "2020-12-05T01:00:33.671820Z",
    "build_snapshot" : false,
    "lucene_version" : "8.7.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

Configurar Elasticsearch

El archivo de configuración principal de Elasticsearch se encuentra en /etc/elasticsearch/elasticsearch.yml. Puedes establecer el nombre de tu clúster, el puerto y permitir la conexión remota editando este archivo.

Abre el archivo elasticsearch.yml en tu editor nano:

nano /etc/elasticsearch/elasticsearch.yml

Cambia las siguientes líneas:

cluster.name: my-cluster
network.host: 172.16.0.10
discovery.seed_hosts: 172.16.0.10

Guarda y cierra el archivo y reinicia el servicio Elasticsearch para aplicar la configuración:

systemctl restart elasticsearch

En este punto, Elasticsearch está configurado para aceptar la conexión desde el host remoto. Ahora puedes pasar al siguiente paso.

Configurar el cortafuegos UFW

Por defecto, UFW está instalado en Ubuntu 20.04. Si no está instalado, puedes instalarlo con el siguiente comando:

apt-get install ufw -y

Una vez instalado el UFW, permite la conexión SSH y el puerto Elasticsearch para el host remoto (172.16.0.100) con el siguiente comando:

ufw allow ssh
ufw allow from 172.16.0.100 to any port 9200

A continuación, habilita el cortafuegos UFW con el siguiente comando:

ufw enable

A continuación, verifica el estado de las reglas del cortafuegos UFW con el siguiente comando:

ufw status

Deberías obtener la siguiente salida:

Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere                  
9200                       ALLOW       172.16.0.100              
22/tcp (v6)                ALLOW       Anywhere (v6)             

Conclusión

Enhorabuena! has instalado con éxito Elasticsearch y lo has configurado para la conexión remota en el servidor Ubuntu 20.04. Ahora puedes integrar Elasticsearch con tu aplicación. No dudes en preguntarme si tienes alguna duda.

Scroll al inicio