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.

https://opendistro.github.io/

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 unas 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 + 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.