Cómo instalar y configurar Elasticsearch en Ubuntu 22.04

Índice
  1. Introducción
  • Prerrequisitos
  • Paso 1: Instalación y configuració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
  • Una versión anterior de este artículo fue escrita por Toli .

    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 22.04 con 2 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 22.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 y configuració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, use 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 usando 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 al gpg --dearmorcomando, que convierte la clave en un formato que apt puede usar para verificar los paquetes descargados.

    1. curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic.gpg

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

    1. echo "deb [signed-by=/usr/share/keyrings/elastic.gpg] https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

    La [signed-by=/usr/share/keyrings/elastic.gpg]parte del archivo le indica a apt que use la clave que descargó para verificar la información del repositorio y del archivo de los paquetes de Elasticsearch.

    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

    Presione Ycuando se le solicite para confirmar la instalación. Si se le solicita que reinicie algún servicio, presione ENTERpara aceptar los valores predeterminados y continuar. Elasticsearch ya está instalado y listo para configurarse.

    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 con localhostpara que se lea 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 22.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, debería recibir un resultado como este:

    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ía recibir la siguiente respuesta:

    Output{  "name" : "elastic-22",  "cluster_name" : "elasticsearch",  "cluster_uuid" : "DEKKt_95QL6HLaqS9OkPdQ",  "version" : {    "number" : "7.17.1",    "build_flavor" : "default",    "build_type" : "deb",    "build_hash" : "e5acb99f822233d62d6444ce45a4543dc1c8059a",    "build_date" : "2022-02-23T22:20:54.153567231Z",    "build_snapshot" : false,    "lucene_version" : "8.11.1",    "minimum_wire_compatibility_version" : "6.8.0",    "minimum_index_compatibility_version" : "6.0.0-beta1"  },  "tagline" : "You Know, for Search"}

    Si recibe 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 -X GET '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'

    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,  "result" : "updated",  "_shards" : {    "total" : 2,    "successful" : 1,    "failed" : 0  },  "_seq_no" : 1,  "_primary_term" : 1}

    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,  "_seq_no" : 1,  "_primary_term" : 1,  "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. Para explorar más a fondo la funcionalidad de Elasticsearch, consulte la documentación oficial de Elasticsearch .

    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