2. Training contents
- Qué es Elasticsearch?
- Introducción
- Casos de uso típicos
- Familia de Elastic: Kibana, Logstash, Beats, APM...
- Qué hay que saber sobre Elasticsearch
- Replicas, Shards y nodos
- Trucos de configuración
3. Qué es Elasticsearch?
- El objetivo de ElasticSearch era tener un buscador
escalable.
- Funciona sobre Lucene.
- Creado en 2010 para competir con Apache Solr.
- Arquitectura distribuida de saque en su diseño
inicial
- Fácil de usar desde cualquier lenguaje de
programación vía REST APIs
4. Typical use-cases
- Datos (relativamente) estáticos: un dataset grande
(o pequeño) que puede crecer o cambiar lentamente
como un catálogo de productos.
- Series temporales: datos sobre eventos asociados a
un momento particular en el tiempo que suelen crecer
muy rápido tales como ficheros de log o métricas de
performance.
5. Elastic family
- Elasticsearch es un buscador diseñado para ser
escalable y fácil de usar en cualquier lenguaje.
- Logstash & Beats se usan para transformar datos de
los logs y guardarlos en Elasticsearch.
- Kibana es la plataforma de visualización de analíticas
generadas desde Elasticsearch.
- APM es el nuevo producto estrella de Elastic diseñado
para el caso de uso de performance monitoring.
7. Elastic node types
- Master node: coordina la topología de los datos.
Controla dónde están guardados los datos.
- Data node: Guarda los datos. Tanto réplicas como
shards.
- Otros: Ingest node, machine learning node,
transform node, etc...
8. Configuration tips: Cuántos shards?
- Heavy indexing: + shards
- Heavy search traffic: + réplicas
- Large dataset: Ajusta el número de shards para que
cada uno ocupe de 10 a 40 GB
- Small dataset: Deja un único shard
9. Configuration tips: Health status
- VERDE: Todos los shards - primarios y secundarios - están asignados
correctamente.
- AMARILLO: Los shards primarios están bien, pero alguna réplica
secundaria no está asignada.
- ROJO: Un shard primario no está asignado en el clúster
10. Configuration tips
- Los shards deben tener un tamaño de entre 10GB -
40GB
- Hay que escoger un número divisible de shards para
usar la shrink y la rollover api.
- Si tu clúster va a crecer, considera tener másters
dedicados. Mínimo 3 para evitar split-brain.
- Usar dynamic=strict para que no se puedan auto
añadir campos en el índice.
11. Configuration tips
- Setear la ram del data-nodo a la mitad -1 i.e. para 64GB
de RAM, pondriamos 31GB para el proceso Java
- Idealmente, data-nodes con 64GB de RAM y
master-nodes con 16GB de RAM
- No usar nunca kill -9 {process_id}, usar kill
{process_id}. Los buffers no se cierran bien.
- Usar Rally para tests de carga.