Cómo instalar y configurar Elasticsearch en Ubuntu 18.04

Índice
  1. Introducción
  • Prerrequisitos
  • Paso 1: Instalación de Elasticsearch
  • Paso 2: Configuración de Elasticsearch
  • Paso 3: Protección de Elasticsearch
  • Paso 4: Prueba de Elasticsearch
  • Paso 5: uso de Elasticsearch
  • Conclusión
  • Toli escribió una versión anterior de este artículo.

    Introducción

    Elasticsearch es una plataforma para la búsqueda distribuida y el análisis de datos en tiempo real. Es una opción popular debido a su facilidad de uso, sus potentes funciones y su escalabilidad.

    Este artículo lo guiará a través de la instalación de Elasticsearch, su configuración para su caso de uso, la protección de su instalación y el comienzo de trabajar con su servidor Elasticsearch.

    Prerrequisitos

    Antes de seguir este tutorial, necesitarás:

    • Un servidor Ubuntu 18.04 con 4 GB de RAM y 2 CPU configurado con un usuario sudo que no sea root. Puedes lograrlo siguiendo la configuración inicial del servidor con Ubuntu 18.04

    • Se ha instalado OpenJDK 11. Para obtener instrucciones, consulte nuestra guía Cómo instalar Java con Apt en Ubuntu 18.04.

    En este tutorial, trabajaremos con la cantidad mínima de CPU y RAM necesaria para ejecutar Elasticsearch. Tenga en cuenta que la cantidad de CPU, RAM y almacenamiento que necesitará su servidor Elasticsearch depende del volumen de registros que espera.

    Paso 1: Instalación de Elasticsearch

    Los componentes de Elasticsearch no están disponibles en los repositorios de paquetes predeterminados de Ubuntu. Sin embargo, se pueden instalar con APT después de agregar la lista de fuentes de paquetes de Elastic.

    Todos los paquetes están firmados con la clave de firma de Elasticsearch para proteger su sistema de la suplantación de paquetes. El administrador de paquetes considerará confiables los paquetes que se hayan autenticado con la clave. En este paso, importará la clave GPG pública de Elasticsearch y agregará la lista de fuentes de paquetes de Elastic para instalar Elasticsearch.

    Para comenzar, utilice cURL, la herramienta de línea de comandos para transferir datos con URL, para importar la clave GPG pública de Elasticsearch a APT. Tenga en cuenta que estamos utilizando los argumentos -fsSL para silenciar todo el progreso y los posibles errores (excepto una falla del servidor) y para permitir que cURL realice una solicitud en una nueva ubicación si se redirige. Envíe la salida del comando cURL al programa apt-key, que agrega la clave GPG pública a APT.

    1. curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

    A continuación, agregue la lista de fuentes de Elastic al sources.list.ddirectorio, donde APT buscará nuevas fuentes:

    1. echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

    A continuación, actualice sus listas de paquetes para que APT lea la nueva fuente de Elastic:

    1. sudo apt update

    Luego instale Elasticsearch con este comando:

    1. sudo apt install elasticsearch

    Elasticsearch ya está instalado y listo para ser configurado.

    Paso 2: Configuración de Elasticsearch

    Para configurar Elasticsearch, editaremos su archivo de configuración principal elasticsearch.ymldonde se almacenan la mayoría de sus opciones de configuración. Este archivo se encuentra en el /etc/elasticsearchdirectorio

    Utilice su editor de texto preferido para editar el archivo de configuración de Elasticsearch. Aquí utilizaremos nano:

    1. sudo nano /etc/elasticsearch/elasticsearch.yml

    Nota: el archivo de configuración de Elasticsearch está en formato YAML, lo que significa que debemos mantener el formato de sangría. Asegúrese de no agregar espacios adicionales mientras edita este archivo.

    El elasticsearch.ymlarchivo proporciona opciones de configuración para el clúster, el nodo, las rutas, la memoria, la red, la detección y la puerta de enlace. La mayoría de estas opciones están preconfiguradas en el archivo, pero puede cambiarlas según sus necesidades. Para los fines de nuestra demostración de una configuración de un solo servidor, solo ajustaremos la configuración del host de red.

    Elasticsearch escucha el tráfico de todas partes en el puerto 9200. Deberá restringir el acceso externo a su instancia de Elasticsearch para evitar que personas externas lean sus datos o apaguen su clúster de Elasticsearch a través de su [API REST] (https://en.wikipedia.org/wiki/Representational_state_transfer). Para restringir el acceso y, por lo tanto, aumentar la seguridad, busque la línea que especifica network.host, descomentela y reemplace su valor por localhostpara que se vea así:

    /etc/elasticsearch/elasticsearch.yml

    . . .# ---------------------------------- Network -----------------------------------## Set the bind address to a specific IP (IPv4 or IPv6):#network.host: localhost. . .

    Hemos especificado localhostque Elasticsearch escuche en todas las interfaces y direcciones IP vinculadas. Si desea que escuche solo en una interfaz específica, puede especificar su IP en lugar de localhost. Guarde y cierre elasticsearch.yml. Si está utilizando nano, puede hacerlo presionando CTRL+X, seguido de Yy luego ENTER.

    Estas son las configuraciones mínimas con las que puedes comenzar a usar Elasticsearch. Ahora puedes iniciar Elasticsearch por primera vez.

    Inicie el servicio Elasticsearch con systemctl. Espere unos minutos para que Elasticsearch se inicie. De lo contrario, es posible que reciba errores sobre la imposibilidad de conectarse.

    1. sudo systemctl start elasticsearch

    A continuación, ejecute el siguiente comando para permitir que Elasticsearch se inicie cada vez que se inicie su servidor:

    1. sudo systemctl enable elasticsearch

    Con Elasticsearch habilitado al inicio, pasemos al siguiente paso para analizar la seguridad.

    Paso 3: Protección de Elasticsearch

    De forma predeterminada, Elasticsearch puede ser controlado por cualquier persona que pueda acceder a la API HTTP. Esto no siempre es un riesgo de seguridad porque Elasticsearch solo escucha en la interfaz de bucle invertido (es decir, 127.0.0.1), a la que solo se puede acceder de forma local. Por lo tanto, no es posible el acceso público y, siempre que todos los usuarios del servidor sean de confianza, la seguridad puede no ser una preocupación importante.

    Si necesita permitir el acceso remoto a la API HTTP, puede limitar la exposición de la red con el firewall predeterminado de Ubuntu, UFW. Este firewall ya debería estar habilitado si siguió los pasos del tutorial de requisitos previos Configuración inicial del servidor con Ubuntu 18.04.

    Ahora configuraremos el firewall para permitir el acceso al puerto HTTP API de Elasticsearch predeterminado (TCP 9200) para el host remoto de confianza, generalmente el servidor que está utilizando en una configuración de servidor único, como 198.51.100.0. Para permitir el acceso, escriba el siguiente comando:

    1. sudo ufw allow from 198.51.100.0 to any port 9200

    Una vez completado esto, puedes habilitar UFW con el comando:

    1. sudo ufw enable

    Por último, verifique el estado de UFW con el siguiente comando:

    1. sudo ufw status

    Si ha especificado las reglas correctamente, el resultado debería verse así:

    OutputStatus: activeTo                         Action      From--                         ------      ----9200                       ALLOW      198.51.100.022                         ALLOW       Anywhere22 (v6)                    ALLOW       Anywhere (v6)

    Ahora el UFW debería estar habilitado y configurado para proteger el puerto 9200 de Elasticsearch.

    Si desea invertir en protección adicional, Elasticsearch ofrece la posibilidad de comprar el complemento comercial Shield.

    Paso 4: Prueba de Elasticsearch

    A estas alturas, Elasticsearch debería estar ejecutándose en el puerto 9200. Puedes probarlo con cURL y una solicitud GET.

    1. curl -X GET 'http://localhost:9200'

    Deberías ver la siguiente respuesta:

    Output{  "node.name" : "My First Node",  "cluster.name" : "mycluster1",  "version" : {    "number" : "2.3.1",    "build_hash" : "bd980929010aef404e7cb0843e61d0665269fc39",    "build_timestamp" : "2020-04-04T12:25:05Z",    "build_snapshot" : false,    "lucene_version" : "5.5.0"  },  "tagline" : "You Know, for Search"}

    Si ve una respuesta similar a la anterior, Elasticsearch está funcionando correctamente. De lo contrario, asegúrese de haber seguido las instrucciones de instalación correctamente y de haber dejado pasar un tiempo para que Elasticsearch se inicie por completo.

    Para realizar una verificación más exhaustiva de Elasticsearch, ejecute el siguiente comando:

    1. curl -XGET 'http://localhost:9200/_nodes?pretty'

    En la salida del comando anterior puedes verificar todas las configuraciones actuales del nodo, el clúster, las rutas de la aplicación, los módulos y más.

    Paso 5: uso de Elasticsearch

    Para comenzar a utilizar Elasticsearch, primero agreguemos algunos datos. Elasticsearch utiliza una API RESTful, que responde a los comandos CRUD habituales: crear , leer , actualizar y eliminar . Para trabajar con ella, utilizaremos nuevamente el comando cURL.

    Puedes agregar tu primera entrada de la siguiente manera:

    1. curl -XPOST -H "Content-Type: application/json" 'http://localhost:9200/tutorial/helloworld/1' -d '{ "message": "Hello World!" }'

    Debería recibir la siguiente respuesta:

    Output{"_index":"tutorial","_type":"helloworld","_id":"1","_version":2,"result":"updated","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":1,"_primary_term":1}

    Con cURL, enviamos una solicitud HTTP POST al servidor Elasticsearch. La URI de la solicitud tenía /tutorial/helloworld/1varios parámetros:

    • tutoriales el índice de los datos en Elasticsearch.
    • helloworldes el tipo
    • 1es el ID de nuestra entrada bajo el índice y tipo anteriores.

    Puede recuperar esta primera entrada con una solicitud HTTP GET.

    1. curl -X GET -H "Content-Type: application/json" 'http://localhost:9200/tutorial/helloworld/1' -d '{ "message": "Hello World!" }'

    Este debería ser el resultado:

    Output{"_index":"tutorial","_type":"helloworld","_id":"1","_version":1,"found":true,"_source":{ "message": "Hello, World!" }}

    Para modificar una entrada existente, puede utilizar una solicitud HTTP PUT.

    1. curl -X PUT -H "Content-Type: application/json" 'localhost:9200/tutorial/helloworld/1?pretty' -d '
    2. {
    3. "message": "Hello, People!"
    4. }'

    Elasticsearch debería reconocer una modificación exitosa de esta manera:

    Output{  "_index" : "tutorial",  "_type" : "helloworld",  "_id" : "1",  "_version" : 2,  "_shards" : {    "total" : 2,    "successful" : 1,    "failed" : 0  },  "created" : false}

    En el ejemplo anterior, hemos modificado el messagede la primera entrada a “¡Hola a todos!”. Con ello, el número de versión se ha incrementado automáticamente a 2.

    Es posible que haya notado el argumento adicional prettyen la solicitud anterior. Permite un formato legible para humanos, de modo que pueda escribir cada campo de datos en una nueva fila. También puede "embellecer" sus resultados al recuperar datos para obtener una salida más legible ingresando el siguiente comando:

    1. curl -X GET -H "Content-Type: application/json" 'http://localhost:9200/tutorial/helloworld/1?pretty'

    Ahora la respuesta estará formateada para que un humano la analice:

    Output{  "_index" : "tutorial",  "_type" : "helloworld",  "_id" : "1",  "_version" : 2,  "found" : true,  "_source" : {    "message" : "Hello, People!"  }}

    Hemos agregado y consultado datos en Elasticsearch. Para obtener más información sobre las demás operaciones, consulte la documentación de la API.

    Conclusión

    Ya ha instalado, configurado y comenzado a utilizar Elasticsearch. Desde el lanzamiento original de Elasticsearch, Elastic ha desarrollado tres herramientas adicionales (Logstash, Kabana y Beats) para utilizarlas junto con Elasticsearch como parte de Elastic Stack. Si se utilizan en conjunto, estas herramientas le permiten buscar, analizar y visualizar registros generados desde cualquier fuente y en cualquier formato en una práctica conocida como registro centralizado. Para comenzar a utilizar Elastic Stack en Ubuntu 18.04, consulte nuestra guía Cómo instalar Elasticsearch, Logstash y Kibana (Elastic Stack) en Ubuntu 18.04.

    SUSCRÍBETE A NUESTRO BOLETÍN 
    No te pierdas de nuestro contenido ni de ninguna de nuestras guías para que puedas avanzar en los juegos que más te gustan.

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Subir

    Este sitio web utiliza cookies para mejorar tu experiencia mientras navegas por él. Este sitio web utiliza cookies para mejorar tu experiencia de usuario. Al continuar navegando, aceptas su uso. Mas informacion