Elasticsearch: Migración OpenDistro para Elasticsearch
Disponible a partir de la versión 3.0.0-Jailbreak.
La versión gratuita de Elasticsearch que proporciona la empresa Elastic, que es su desarrollador, no tiene muchas funciones básicas que son necesarias para hacer un despliegue en producción. Por ejemplo, no tiene seguridad ni soporte ssl para comunicaciones.
Por ello hemos integrado en plataforma OpenDistro, que es una distribución de Elasticsearch que es Apache 2.0 que sí tiene seguridad, soporte ssl, soporte sql, etc. Está mantenida por Amazon y es la que usan ellos en AWS.
Además de esta migración, se han aumentado las posibilidades de configuración de ontologías definidas sobre Elasticsearch:
Configuración de Shards y Replicas
Hemos añadido la posibilidad de, no solo configurar los valores por defecto para estos campos, sino también el poder establecer valores para cada ontología:
Configuración de Templates
Para almacenar datos de auditoría, logs, timeseries, etc. Elasticsearch recomienda crear varios índices
por bloques temporales, especialmente, si los datos son más o menos homogéneos por dicho bloque temporal. Por ejemplo, crear un índice
por mes, o por semana, o por día, etc.
Para poder hacer esto, Elasticsearch proporciona una serie de elementos que también hemos añadido a la configuración de las ontologías:
Elasticsearch permite crear
templates
en vez deíndices
asociados a un patrón. Por ejemplo, si crea unastemplate
asociada alog-*
, cualquier inserción que se haga en un índice que cumpla el patrón, por ejemplo,log-2021-02-18
, creará el índice (si no existe previamente) usando el mapping configurado en latemplate
.Elasticsearch permite crear
alias
para hacer las queries, de tal forma que unalias
indique variosíndices
. Al hacer la queries, se usa elalias
, y la query se ejecuta en todos losshards
de todos losíndices
, lo que en realidad es exactamente igual, a nivel de rendimiento, que tener uníndice
con el mismo número deshards
totales. En lastemplates
se puede indicar que al crearse uníndice
se le incluya en unalias
determinado.
En esta nueva versión, hemos añadido la posibilidad de crear ontologías como template
Elasticsearch, donde indicaremos el criterio para generación de índices:
Como se puede ver en la imagen anterior, tendremos que especificar un campo usado para la generación del índice
, así como una función a aplicar sobre el mismo.
Las funciones permitidas son:
NONE: Crea el índice como la concatenación del nombre de la ontología + valor del campo.
SUBSTRING: Crea el índice como la concatenación del nombre de la ontología + substrin g(valor del campo, inicio, fin).
Resto de funciones temporales: Extrae los datos de día, mes y/o año en función de la selección. Estas funciones requieren que el campo sea de tipo Timestamp.
Supongamos que tenemos una ontología “Ontology” definida como en el campo anterior. Al insertarse un dato con el campo Ontology.timestamp=”2021-04-08T10:10:00Z”, insertará automáticamente el dato en el índice
“Ontology-2021-04”, teniendo tantos índices como año/mes haya en los datos, todo ello de manera transparente al usuario.
En cuanto a la consulta, cuando se crea la ontología, junto con la creación del template
, se asigna un alias
con el nombre de la ontología que engloba todos los índices que se puedan crear según la regla anterior.