Elasticsearch (E.S.) es un motor de búsqueda (y analítica) a texto completo (full-text). Es un proyecto de código abierto y permite almacenar y analizar grandes volúmenes de información de forma muy rápida y muy próxima al tiempo real. Se usa generalmente como el motor/tecnología subyacente que potencia aplicaciones con características y requerimientos de búsqueda muy complejos.
E.S. está basado en Lucene y es además distribuido y con capacidad de multi-tenencia. Dispone de una interfaz web RESTful y trabaja con documentos JSON. Está desarrollado en Java y está publicado como código abierto bajo las condiciones de la licencia Apache.
En mi caso, he visto que uno de los usos más inmediatos y prácticos es el del almacenamiento de logs, u otro tipo de información que se genere de forma constante y que se requiere almacenar y potencialmente ser analizada. Al ser el motor, E.S. realmente se encarga de la parte del almacenamiento y las capacidades de búsqueda, pero disponen de lo que se denomina Elastic Stack que está conformado de:
Todos los elementos del stack están disponibles para sistemas tipo RPM, y para el caso de RedHat y sus símiles como CentOS y Fedora (también para OpenSuSE), incluso se dispone de un repositorio que facilitará, no solo la instalación, sino la mantenibilidad a través de las actualizaciones. Todo está muy bien documentado en el sitio oficial, pero aquí mi resumen práctico:
Crear un nuevo archivo de repositorio /etc/yum.repos.d/elasticsearch.repo
y agregar el siguiente contenido:
[elasticsearch-6.x] name=Elasticsearch repository for 6.x packages baseurl=https://artifacts.elastic.co/packages/6.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md
Ahora podremos instalar los elementos del stack con yum
(RH y CentOS) o dnf
(Fedora) o zypper
(OpenSuSe):
Elasticsearch:
# yum install elasticsearch # dnf install elasticsearch # zypper install elasticsearch
El servicio instalado se llama elasticsearch y se puede controlar con:
SysV init:
# chkconfig --add elasticsearch # service elasticsearch start
Systemd
# systemctl enable elasticsearch # systemctl start elasticsearch
El servicio empieza a responder inmediatamente por el puerto 9200 (por defecto)
Kibana:
# yum install kibana # dnf install kibana # zypper install kibana
El servicio de instalado se llama kibana y se puede controlar con:
SysV init:
# chkconfig --add kibana # service kibana start
Systemd
# systemctl enable kibana # systemctl start kibana
El servicio empieza a responder inmediatamente por el puerto 5601
(por defecto) y puede usarse la consola desde unnavegador accediendo a http://localhost:5601
:
Logstash:
# yum install logstash # dnf install logstash # zypper install logstash
Beats:
# yum install auditbeat filebeat metricbeat packetbeat # dnf install auditbeat filebeat metricbeat packetbeat # zypper install auditbeat filebeat metricbeat packetbeat
En este caso se instalan todos los 4 tipos de beats disponibles, pero se podría sólo instalar el/los beat/s que se requiera usar, de acuerdo a las necesidades particulares.