26 août 2016

Elasticsearch Data Streams

Data & IA

Hajer

Jerbi

Image d'un homme et un ordinateur.

26 août 2016

Elasticsearch Data Streams

Data & IA

Hajer

Jerbi

Image d'un homme et un ordinateur.

26 août 2016

Elasticsearch Data Streams

Data & IA

Hajer

Jerbi

Image d'un homme et un ordinateur.

Au cours de la Devoxx 2024 se déroulant au Palais des Congrès à Paris du 17 au 19 avril 2024, il y avait un grand choix de conférences. J’ai assisté à la conférence de Maxime Odey, consultant backend et formateur Elasticsearch et Elastic Stack, certifié Spring Corepar Pivotal. Au cours de cette conférence intitulée “Elasticsearch data streams, un condensé de bonnes pratiques pour vos données temporelles», il nous a présenté les outils pratiques dans Elasticsearch pour le traitement des données de séries temporelles.


Qu'est-ce qu'une Times Series Data Stream «TSDS»?

Times Series Data Stream « Une série temporelle, ou une série chronologique » est un ensemble de données qui représente l'évolution d'un phénomène au cours du temps. Les séries temporelles se trouvent dans de nombreux domaines été les constituent l’un des objets d’études les plus répandus de la science des données.


Caractéristiques des Times Series Data Stream

Les séries temporelles sont des propriétés spécifiques des données qui varient avec le temps. L'étude du comportement passé d'une série permet d'identifier des schémas et de réaliser de meilleures prévisions. Lorsqu'elles sont représentées graphiquement, de nombreuses séries temporelles affichent une ou plusieurs des caractéristiques suivantes :

  • Tendance : Elle se réfère à la direction générale dans laquelle les données évoluent

  • Saisonnalité : Elle se réfère à des variations périodiques qui se répètent à intervalles réguliers

  • Cyclicité : Elle se réfère à des fluctuations qui ne sont ni saisonnières ni aléatoires

  • Aspect aléatoire : Il se réfère à des variations imprévisibles



Les séries temporelles et implications

Dans un monde de plus en plus axé sur les données, les séries temporelles jouent un rôle crucial dans l'analyse et la prise de décision. Que ce soit pour suivre les tendances économiques, surveiller les performances d'un système ou analyser des comportements utilisateurs, la gestion efficace des données temporelles est essentielle. Cependant, interroger ces données de manière efficace nécessite une compréhension approfondie des meilleures pratiques. Dans cet article, nous aborderons les stratégies pour formuler des requêtes optimales, l'importance d'une exposition claire des données, ainsi que les questions de purge des données obsolètes et de mise à l'échelle des systèmes. En adoptant ces bonnes pratiques, nous pouvons garantir que nos analyses sont non seulement précises, mais aussi pertinentes et exploitables.


Qu’est ce qu’une Time Series Database

 Une Time Series Database (TSDB) est une base de données optimisée pour traiter les mesures et les événements qui sont suivis, surveillés, échantillonnés et agrégés dans le temps. Il peut s'agir de mesures de serveurs, de surveillance des performances des applications de données de réseau, de capteurs, d'événements, de clics, de transactions sur un marché ou de nombreux autres types de données analytiques.


Comment requêter efficacement ?

Pour requêter efficacement les séries temporelles, il est important de prendre en compte plusieurs éléments :

  • Identifier les données temporelles : il est essentiel de déterminer les variables temporelles à utiliser dans la requête, telles que la date, l'heure, le jour de la semaine...

  • Sélectionner les variables pertinentes : choisissez les variables pertinentes pour votre analyse, en fonction de votre objectif et du contexte de vos données.

  • Utiliser des fonctions de transformation temporelle : utilisez des fonctions de transformation temporelle pour agréger, filtrer ou manipuler les données temporelles.

  • Utiliser des requêtes temporelles avancées : utilisez des requêtes temporelles avancées, telles que les requêtes de séries temporelles, pour extraire des informations précises sur les tendances, les saisons, les cycles, etc.

  • Utiliser des outils de visualisation : utilisez des outils de visualisation pour représenter graphiquement les séries temporelles et mieux comprendre les tendances et les patterns.

Comment exposer nos données ? 

Il existe plusieurs façons d'exposer des données pour obtenir des séries temporelles.
Voici quelques étapes à suivre pour exposer correctement les données :

  • Organiser les données : Il faut s’assurer que les données sont organisées de manière chronologique, avec une colonne spécifique pour la date et/ou l'heure.

  • Utiliser un format adapté : Pour les séries temporelles, il est recommandé d'utiliser un format de données spécifique, tel que le format datetime en Python ou le format POSIXct en R.

  • Choisir la bonne granularité : Déterminez la fréquence à laquelle vous souhaitez observer vos données (par exemple, par heure, par jour, par mois) et assurez-vous que vos données sont agrégées en conséquence.

  • Visualiser les données : Utilisez des graphiques pour visualiser vos séries temporelles et identifier les tendances et les modèles.

  • Utiliser des outils d'analyse : Utilisez des outils d'analyse des séries temporelles tels que Grafana et Kibana pour modéliser vos données temporelles.


Doit-on purger ?

Il est recommandé de purger les séries temporelles avec précaution, en analysant attentivement les données et en utilisant des méthodes statistiques appropriées pour identifier les valeurs à supprimer. La purge des séries temporelles peut être nécessaire dans certains cas, mais elle doit être effectuée avec précaution et en utilisant des méthodes appropriées pour garantir l'intégrité des données.

Dans le cas de l’Elasticsearch, Il est recommandé de planifier la purge régulièrement pour maintenir la taille de votre index sous contrôle et éviter les problèmes de performances liés à la croissance des données.

Pour purger les séries temporelles dans Elasticsearch, vous pouvez utiliser l'API de suppression par requête et spécifier la plage de dates que vous souhaitez purger.

Par exemple, afin de supprimer les données plus anciennes que X jours, on peut créer la requête suivante :



Scaling

Le scaling dans Elasticsearch se réfère à la capacité d'ajouter plus de ressources, comme des nœuds ou des shards, pour gérer une charge de travail croissante. Il permet d'ajuster la capacité de stockage et de traitement en fonction des besoins de l'indexation et de la recherche de données. Il peut être réalisé en ajoutant de nouveaux nœuds au cluster Elasticsearch pour répartir la charge de travail et améliorer les performances. Il est important de surveiller et de planifier le scaling pour garantir des performances optimales de votre cluster Elasticsearch.

Il existe deux types de scaling :

  • Le scaling horizontal consiste à ajouter plus de nœuds au cluster pour répartir la charge et accélérer le processus d'indexation

  • Le scaling vertical qui consiste à augmenter les ressources des nœuds existants


La suite Elastic Stack

La suite Elastic Stack, également connue sous le nom d'Elastic, est une plateforme open source qui permet de rechercher, d'analyser et de visualiser des données en temps réel. Elle est composée de plusieurs produits, tels qu’Elasticsearch, Logstash, Kibana et Beats, qui travaillent ensemble pour offrir des fonctionnalités avancées de gestion et d'analyse de données. Ces outils sont largement utilisés dans le domaine de la gestion des logs, de la surveillance des performances et de la sécurité des systèmes informatiques.


Ci-dessous un aperçu du dashboard kibana :


Elasticsearch

Dans le monde du traitement et de la recherche de données, Elasticsearch s'est imposé comme un outil puissant et flexible, particulièrement adapté pour l'analyse de grandes quantités d'informations. Pour tirer pleinement parti de ses capacités, il est essentiel de comprendre certains concepts clés, tels que le mapping, l'analyse de texte, le sizing et l'utilisation des alias. Dans cet article, nous explorerons ces concepts en profondeur, afin de mieux comprendre comment les utiliser pour maximiser l'efficacité de vos projets Elasticsearch.


Mapping et analyse de texte

Le mapping et l'analyse de texte dans Elasticsearch sont des fonctionnalités essentielles pour indexer et rechercher efficacement des données textuelles. Le mapping définit la structure des données et comment elles doivent être indexées, tandis que l'analyse de texte consiste à traiter le texte avant son indexation pour en extraire des informations pertinentes. Ces processus permettent à Elasticsearch de comprendre et de rechercher des termes dans les documents textuels de manière précise et efficace.

Dynamic template utilisé par défaut pour les chaines de caractères.

Sizing

Les bonnes pratiques de dimensionnement dans Elasticsearch dépendent de divers facteurs tels que la taille des données, le nombre de nœuds, la charge de requêtes, etc. Il est recommandé de surveiller régulièrement les performances du cluster, de répartir équitablement les données entre les nœuds, d'utiliser des indexations et des requêtes efficaces, et de dimensionner les nœuds en fonction de la charge prévue. Il est également important de garder à l'esprit que les besoins en dimensionnement peuvent évoluer avec le temps, donc il est conseillé de surveiller et d'ajuster en conséquence.


Alias

Les alias dans Elasticsearch sont des noms alternatifs ou des étiquettes qui peuvent être associés à un index ou à une requête. Ils servent à simplifier la gestion des index en permettant de faire référence à un index sous différents noms. Les alias peuvent être utilisés pour renommer un index, regrouper plusieurs index sous un seul nom, ou encore pour faciliter la mise à jour ou la suppression d'index sans impacter les requêtes existantes.

En résumé, l'utilisation des alias dans Elasticsearch permet de simplifier la gestion des index en leur attribuant des noms plus conviviaux et significatifs. Cela facilite la configuration en permettant de faire référence à un index par son alias plutôt que par son nom réel. Les alias peuvent également être utilisés pour regrouper plusieurs index sous un même nom, ce qui simplifie les requêtes et les opérations de maintenance. En résumé, l'utilisation des alias dans Elasticsearch facilite la configuration en rendant la gestion des index plus intuitive et flexible.


Settings et sharing dans Elasticsearch

Dans le domaine de la gestion des données, Elasticsearch se distingue par sa capacité à traiter efficacement de grandes quantités d'informations. Pour optimiser cette gestion, plusieurs concepts clés sont à considérer, notamment la création de nouveaux index, le Index Lifecycle Management (ILM), l'architecture hot-warm-cold, et le mécanisme de rollover.
Dans cet article, nous explorerons ces concepts en détail, afin de mieux comprendre comment les mettre en œuvre pour maximiser l'efficacité et la performance de vos projets Elasticsearch.


Création des nouveaux index

Pour gérer une grosse volumétrie, il convient de créer un nouvel index que l’on enregistrera dans notre alias. Ainsi le nouvel index deviendra l’index d’écritures et les anciens restent utilisés en lecture.

Pour créer un index dans Elasticsearch avec le bon mapping et les bons paramètres, vous pouvez utiliser l'API de gestion des index. Assurez-vous de définir correctement le mapping des champs pour spécifier le type de données et les paramètres de recherche appropriés. Vous pouvez également configurer les paramètres de l'index, tels que le nombre de réplicas et de shards, pour optimiser les performances de recherche. N'hésitez pas à consulter la documentation officielle d'Elasticsearch pour des instructions détaillées sur la création d'index personnalisés.

Les templates d'index sont des modèles qui définissent la configuration initiale des index. Ils permettent de définir des paramètres tels que les mappings, les paramètres de stockage et les paramètres d'analyse pour les nouveaux index créés. Les templates d'index sont utiles pour garantir une cohérence dans la configuration des index et pour automatiser le processus de création d'index avec des paramètres prédéfinis.


Index Lifecycle Management

ILM est une fonctionnalité d'Elasticsearch qui permet de gérer le cycle de vie des index de manière automatisée. Il permet de définir des politiques pour gérer la transition des index entre les différentes phases de leur cycle de vie, telles que l'indexation, la recherche et la suppression.

Un exemple d'utilisation d'ILM dans Elasticsearch serait de définir une politique qui spécifie que les index plus anciens doivent être déplacés vers un stockage moins coûteux après un certain temps, ou que les index doivent être supprimés après une période définie. Cela permet d'optimiser l'utilisation des ressources et de garantir une gestion efficace des données à long terme.


Hot-warm-cold architecture

L'architecture "hot warm cold" dans Elasticsearch est une approche de gestion des données qui consiste à diviser les nœuds en différentes catégories en fonction de leur rôle et de leur capacité de stockage. Les nœuds "hot" sont utilisés pour les données récentes et fréquemment consultées, les nœuds "warm" pour les données moins récentes mais toujours accessibles, et les nœuds "cold" pour les données archivées et peu consultées. Cette architecture permet d'optimiser les performances et les coûts de stockage en adaptant la gestion des données à leur fréquence d'utilisation.


Rollover

Le rollover est une fonctionnalité qui permet de gérer automatiquement l'indexation des données en créant de nouveaux index lorsque l'index actuel atteint une certaine taille ou un certain nombre de documents. Cela permet de maintenir de bonnes performances et de gérer efficacement la croissance des données. Les avantages du rollover sont notamment la facilité de gestion des index, la réduction des temps d'arrêt et la possibilité de mettre en place une stratégie de gestion des données plus efficace et une meilleure répartition des charges sur les différents nœuds du cluster.

En conclusion, Elasticsearch fournit un ensemble d’outils pour maintenir la performance et l'efficacité d'un cluster Elasticsearch face à une augmentation continue des données. En adoptant des stratégies de rollover appropriées et en intégrant ILM, les utilisateurs peuvent non seulement optimiser l'utilisation des ressources, mais aussi garantir une gestion fluide des données au fil du temps. Cela permet de s'assurer que les index restent performants, tout en facilitant les mises à jour et la maintenance. En somme, une approche proactive de la gestion des index contribue à une infrastructure de données robuste et réactive, prête à relever les défis futurs.


Conclusion

Cet article sur Elasticsearch Data Streams a mis en lumière l'importance croissante des données temporelles dans notre monde axé sur l'information. Nous avons exploré les outils et les bonnes pratiques qui permettent de gérer efficacement ces données, en tirant parti des fonctionnalités avancées d'Elasticsearch. Grâce à des concepts tels que la création d'index, l'Index Lifecycle Management, et l'architecture hot-warm-cold, il est possible d'optimiser le stockage et l'accès aux données tout en garantissant des performances élevées.
L'utilisation de data streams facilite également la gestion des flux de données en temps réel, permettant aux utilisateurs de suivre et d'analyser les événements au fur et à mesure qu'ils se produisent. En intégrant ces pratiques dans vos projets, vous pouvez non seulement améliorer l'efficacité de vos analyses, mais aussi garantir une scalabilité et une flexibilité adaptées aux  besoins changeants de votre entreprise.

En adoptant ces bonnes pratiques et en exploitant pleinement les capacités d'Elasticsearch, vous serez en mesure de transformer vos données temporelles en informations précieuses, propices à une prise de décision éclairée et à une meilleure compréhension des tendances qui façonnent votre domaine d'activité. N'hésitez pas à expérimenter et à ajuster ces outils pour répondre au mieux à vos besoins spécifiques.