Tutorial

Cómo instalar y configurar Elasticsearch en Ubuntu 20.04

Published on May 21, 2020

Senior Manager, DevEd

Español
Cómo instalar y configurar Elasticsearch en Ubuntu 20.04

Introducción

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

En este artículo, se explicará cómo instalar Elasticsearch, configurarla para su caso de uso, proteger su instalación y comenzar a trabajar con su servidor de Elasticsearch.

Requisitos previos

Antes de comenzar con este tutorial, necesitará lo siguiente:

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

Paso 1: Instalar y configurar Elasticsearch

Los componentes de Elasticsearch no están disponibles en los repositorios de paquetes predeterminados de Ubuntu. Sin embargo, pueden instalarse con APT una vez que agregue la lista de fuentes de paquetes de Elastic.

Todos los paquetes de Elasticsearch están firmados con la clave de firma de Elasticsearch para proteger su sistema contra la suplantación de paquetes. Su administrador de paquetes considerará confiables los paquetes autenticados 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 usando los argumentos -fsSL para silenciar todos los progresos y posibles errores (excepto los errores del servidor) y para permitir a cURL hacer una solicitud en una ubicación nueva si se redirige. Canalice el resultado del comando cURL al programa apt-key, que añade 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 directorio sources.list.d, 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

Ahora, Elasticsearch está instalada y lista para utilizarse.

Paso 2: Configurar Elasticsearch

Para configurar Elasticsearch, editaremos su archivo de configuración principal elasticsearch.yml, donde se almacena la mayoría de sus opciones de configuración. Este archivo se encuentra en el directorio /etc/elasticsearch.

Utilice su editor de texto preferido para editar el archivo de configuración de Elasticsearch. En este caso, utilizaremos nano:

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

Nota: el archivo de configuración de Elasticsearch se encuentra en formato YAML, lo que significa que debemos mantener el formato de sangrías. Asegúrese de no añadir espacios adicionales al editar este archivo.

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

Elasticsearch escucha el tráfico de todos los lugares en el puerto 9200. Es conveniente restringir el acceso externo a su instancia de Elasticsearch para evitar que terceros lean sus datos o cierren 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, elimine los comentarios y reemplace su valor por localhost para que diga:

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

Hemos especificado localhost para que Elasticsearch escuche en todas las interfaces y las IP vinculadas. Si quiere que escuche únicamente en una interfaz específica, puede especificar su IP en lugar de localhost. Guarde y cierre elasticsearch.yml. Si utiliza nano, puede hacerlo pulsando CTRL+X, seguido de Y y, luego, ENTER.

Estos son los ajustes mínimos con los que puede comenzar para usar Elasticsearch. Ahora, puede iniciar Elasticsearch por primera vez.

Inicie el servicio de Elasticsearch con systemctl. Elasticsearch tardará unos minutos en iniciarse. Espere, de lo contrario, es posible que reciba notificaciones de error indicando que no se puede conectar.

  1. sudo systemctl start elasticsearch

Luego, ejecute el siguiente comando para permitir que Elasticsearch se cargue cada vez que su servidor se inicie:

  1. sudo systemctl enable elasticsearch

Ahora que Elasticsearch está habilitado en el inicio, vayamos al siguiente paso para hablar sobre la seguridad.

Paso 3: Proteger Elasticsearch

Por defecto, cualquier persona que pueda acceder a la API HTTP puede controlar Elasticsearch. Esto no siempre representa un riesgo de seguridad, dado que Elasticsearch escucha únicamente 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, el acceso público no es posible, y, siempre y cuando todos los usuarios del servidor sean confiables, la seguridad 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. Ya debería tener este firewall habilitado si siguió los pasos del tutorial Configuración inicial del servidor con Ubuntu 20.04 que se indicó en los requisitos previos.

Ahora, configuraremos el firewall para que permita el acceso al puerto de la API HTTP predeterminada de Elasticsearch (TCP 9200) para el host remoto de confianza que, en general, es el servidor que utiliza en una configuración de un solo servidor, 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

Cuando haya terminado, puede habilitar UFW con el siguiente comando:

  1. sudo ufw enable

Por último, revise el estado de UFW con el comando que se indica a continuación:

  1. sudo ufw status

Si especificó las reglas correctamente, debería obtener el siguiente resultado:

Output
Status: active To Action From -- ------ ---- 9200 ALLOW 198.51.100.0 22 ALLOW Anywhere 22 (v6) ALLOW Anywhere (v6)

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

Si quiere invertir en protección adicional, Elasticsearch ofrece el complemento Shield comercial para su compra.

Paso 4: Probar Elasticsearch

Ahora, Elasticsearch debería estar ejecutándose en el puerto 9200. Puede probarla con cURL y una solicitud GET.

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

Debería recibir la siguiente respuesta:

Output
{ "name" : "elasticsearch-ubuntu20-04", "cluster_name" : "elasticsearch", "cluster_uuid" : "qqhFHPigQ9e2lk-a7AvLNQ", "version" : { "number" : "7.6.2", "build_flavor" : "default", "build_type" : "deb", "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f", "build_date" : "2020-03-26T06:34:37.794943Z", "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" }

Si obtiene una respuesta similar a la anterior, Elasticsearch funciona correctamente. De lo contrario, asegúrese de haber seguido correctamente las instrucciones de instalación y de haber esperado un tiempo para que Elasticsearch se inicie por completo.

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

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

En el resultado del comando anterior, puede verificar todos los ajustes actuales del nodo, el clúster, las rutas de las aplicaciones, los módulos y más.

Paso 5: Usar Elasticsearch

Para comenzar a usar Elasticsearch, primero, añadiremos algunos datos. Elasticsearch utiliza una API RESTful, que responde a los comandos habituales de CRUD: create, read, update y delete (crear, leer, actualizar y eliminar, respectivamente). Para usarlo, utilizaremos el comando cURL de nuevo.

Puede añadir la 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 de Elasticsearch. El identificador URI de la solicitud era /tutorial/helloworld/1 con varios parámetros:

  • tutorial es el índice de los datos de Elasticsearch.
  • helloworld es el tipo.
  • 1 es el ID de nuestra entrada bajo el índice y el 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!" }'

El resultado debería ser el siguiente:

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 la modificación correcta 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, modificamos el mensaje de la primera entrada a “Hello, People!”. Con eso, el número de versión se aumentó automáticamente a 2.

Tal vez haya observado el argumento adicional pretty en la solicitud anterior. Habilita un formato de lenguaje natural para que pueda escribir cada campo de datos en una fila nueva. También puede aplicarlo a sus resultados cuando recupera datos para que sean más legibles al ingresar el siguiente comando:

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

Ahora, la respuesta tendrá un formato que permite 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!" } } }

En este punto, añadimos y consultamos datos en Elasticsearch. Para obtener más información sobre las demás operaciones, consulte la documentación de la API.

Conclusión

Ya instaló, configuró y comenzó a utilizar Elasticsearch. Para seguir explorando la funcionalidad de Elasticsearch, consulte la documentación oficial de Elasticsearch.

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about our products

About the authors
Default avatar

Senior Manager, DevEd

Open source advocate and lover of education, culture, and community.

Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
Leave a comment


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Become a contributor for community

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

DigitalOcean Documentation

Full documentation for every DigitalOcean product.

Resources for startups and SMBs

The Wave has everything you need to know about building a business, from raising funding to marketing your product.

Get our newsletter

Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.

New accounts only. By submitting your email you agree to our Privacy Policy

The developer cloud

Scale up as you grow — whether you're running one virtual machine or ten thousand.

Get started for free

Sign up and get $200 in credit for your first 60 days with DigitalOcean.*

*This promotional offer applies to new accounts only.