Elasticsearch

Instalación

Elasticsearch

Introducción

Elasticsearch é un servidor de buscas por texto completo, baseado en Lucene. É un servidor distribuído, tanto en nodos, como en fragmentos ou shards. Isto permite balancear a carga, facer consultas simultáneas e acelerar a busca de resultados.

Elasticsearch soe ser utilizado xunto con Logstash e Kibana, dando lugar a un stack coñecido coas siglas ELK.
Nesta guía centrareime en Elasticsearch, pero veremos algo de Kibana, xa que as consultas serán executadas neste entorno.

As consultas de Elasticsearch tamén son escritas en formato JSON, o que fai moi doado traballar con elas. Tamén fornece unha API REST para a comunicación.

A nivel de eficiencia, Elasticsearch, é mellor que as bases de datos relacionais para facer buscas por texto. Para este caso de uso, un motor invertido como Lucene é máis eficiente ca un LIKE.

Sobre Kibana, simplemente comentar que é unha plataforma de analise e visualización de datos. Vainos prover dunha interfaz de autenticación e autorización.
Con ela poderemos facer as consultas, que é a parte que imos ver nesta guía, e construir paneis nos que ver o uso da CPU, memoria, erros ou estatísticas das nosas webs. Como número de vendas, ingresos, etc.

Instalación

Hai varias formas de instalar Elasticsearch. Con Docker ou Podman, ou directamente no equipo. O Docker que proporciona Elastic, por defecto vén cunha licenza de tipo básico. Polo que non inclúe toda as características de Elasticsearch. En caso de querer probar todas as opcións, podemos mudar a licenza a trial. Esta permite utilizar máis funcións, pero ten un límite de trinta días. Para descargar Elasticsearch, podemos ir ao sitio oficial https://elastic.co/downloads/elasticsearch.

Xa se distribúe conxuntamente con OpenJDK, así que non fai falla instalar Java.

Tamén pode ser hospedado en Elastic cloud, que nos da dúas semanas de proba, sen requerir tarxeta. Pero isto non o imos cubrir nesta guía.

Debian

Por exemplo para instalar en Debian, primeiro instalamos a dependencia apt-transport-https, con sudo apt install apt-transport-https.

O primeiro será engadir a chave de sinatura pública de Elastic, xa que indican que sempre firman os seus paquetes.

Para isto executamos o seguinte comando.

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg

A continuación engadimos o repositorio de elastic, executando este comando na terminal.

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

NOTA: Non recomendan engadir o repositorio con add-apt-repository. Entre as razóns que comentan indican que non sempre está dispoñible no sistema base, instalalo inclúe outras dependencias. Tamén que se engade o repositorio en /etc/apt/sources.list en lugar de crear un novo ficheiro, na ruta /etc/apt/sources.list.d.
Por último indican que versións vellas engaden unha entrada de tipo deb-src, que dará erro. Xa que elastic non fornece un paquete de tipo source.

Unha vez temos engadido o repositorio, precisamos executar a instalación.

sudo apt update && sudo apt install elasticsearch

Isto é orientativo, xa que nesta guía utilizaremos un contenedor preparado a tal efecto. Para máis información acudide á documentación oficial.

Despregando o contenedor

Prerrequisitos

  • Podman ou Docker
  • git
  • make

Obxectivo

No meu caso, para non instalar dependencias e paquetes no equipo, o que fago é utilizar un contenedor. Para isto clonaremos o repositorio https://codeberg.org/codigomorrazo/elasticsearch-kibana. E seguiremos as instrucións do README.md.

Prefiro facelo así, porque deste xeito xa me queda todo recollido. O entorno e os exemplos que usarei na guía.

O obxectivo do uso deste repositorio é ter un clúster de Elasticsearch de dous nodos, con Kibana funcionando.

Pasos

No Makefile usei Podman en troques de Docker. Pero en caso de querer utilizar Docker, tan só é necesario mudar podman por docker, en caso de utilizar algunha distribución que tarda en actualizarse, pode dar erro ao executar docker compose. Se é o caso, mudar por docker-compose.

O que inclúe este repositorio é Elasticsearch en conxunto con Kibana, para poder facer as consultas e seguir os exemplos. Isto será máis doado que lanzalos por curl ou dalgún outro xeito. De todas formas tamén veremos algo de curl.

Vanse levantar dous nodos de Elasticsearch, para ver algún exemplo de como se reparten os documentos e os índices.

Como se indica no README.md, a licenza está posta por defecto en basic, que non expira, pero tampouco ten toda as opcións. Se nalgún momento se queren probar cousas que non están na básica, pódese mudar a trial. Esta última licenza caduca aos trinta días, polo que teríamos que executar o make reset, para borrar os certificados e volver comezar de cero.

Para comezar axiña, copiaremos o .env.dist como .env. Despois editaremos os contrasinais que aparecen como changeme. Se só imos usar este contenedor para seguir a guía, tamén os podemos deixar quedar.

Para erguer os contenedores executaremos make start. Unha vez arranca podemos entrar en http://localhost:5601 que será a web de Kibana. O usuario por defecto, é elastic e o contrasinal changeme, ou o que poñamos no .env.

Para comprobar que elastic tamén funciona, sen Kibana, nunha terminal podemos facer unha chamada con curl.

curl -k -u elastic:changeme https://localhost:9200

Usamos a bandeira -k porque o contenedor xera un certificado TLS autoasinado. elastic é o nome de usuario por defecto e changeme o contrasinal. Se executamos o comando anterior deberíamos ver unha saída como a seguinte.

{
  "name" : "es01",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "R8oyJwZ-RI2EE7qeMpdaOA",
  "version" : {
    "number" : "9.5.5",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "48acba663b09e70b115dd879329141506c377890",
    "build_date" : "2026-09-30T22:12:03.984586187Z",
    "build_snapshot" : false,
    "lucene_version" : "10.5.1",
    "minimum_wire_compatibility_version" : "8.19.0",
    "minimum_index_compatibility_version" : "8.0.0"
  },
  "tagline" : "You Know, for Search"
}

Conclusión

Con isto teremos o noso laboratorio preparado para comezar a practicar con Elasticsearch. No seguinte capítulo veremos algunhas opcións de configuración e algunhas consultas básicas para comprobar o estado.

Fontes