Nuevas Opciones de Configuración al usar Elasticsearch como RealTimeDB de Plataforma

Disponible a partir de la versión 3.0.0

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 se crea una template asociada a log-*, 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 la template.

  • Elasticsearch permite crear alias para hacer las queries, de tal forma que un alias indique varios índices. Al hacer la queries se usa el alias y la query se ejecuta en todos los shards de todos los índices, lo que en realidad es exactamente igual, a nivel de rendimiento, que tener un índice con el mismo número de shards totales. En las templates se puede indicar que al crearse un índice se le incluya en un alias 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 + substring(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.