Dans un monde où les flux de données temps réel sont de plus en plus présents, les volumes de données de plus en plus importants et le besoin d’observabilité de ces informations de plus en plus critique, le terme Big Data est plus ou moins sur les lèvres de tout le monde.

Le principe est simple mais efficace : récolter des données, beaucoup de données, toujours plus de données, pour peut-être un jour en faire quelque chose. On est sur l’idée du “il vaut mieux en avoir trop et ne pas savoir quoi en faire que de manquer de quelque chose le jour où l’on en a besoin”.

Dans le Big Data on trouve principalement deux genres de données :

  • Des données brutes, non formatées, souvent récoltées de plusieurs sources générant chacune ses propres jeux et formats de données. La volonté est souvent de récolter des informations dans un but d’analyse à postériori, pour du Machine Learning ou de l’analyse de risque par exemples
  • Des données transformées, formatées, souvent représentables par des champs qualifiants (même si l’on peut garder des champs variables en fonction des documents)

Dans ce deuxième cas, le but sera souvent d’indexer des données de la même manière que dans une base relationnelle traditionnelle. Des outils des Big Data tels qu’ElasticSearch sont tout de même souvent utilisés pour leur grande capacité à tenir la charge et leur facilité à scaler avec leur application. Dans ce dernier cas, on aura souvent l’envie de réaliser une interface permettant de parcourir ces données.

Reactive Search est un projet d’AppBase basé sur React et permettant de réaliser simplement et rapidement des interfaces web d’exploration de données pour ElasticSearch, tout en ayant la possibilité de filtrer sur différents champs de ces données.

Reactive Search nous offre ainsi un ensemble de directives permettant de créer simplement des filtres sur certains champs de nos documents Elastic pour requêter notre base et en afficher les résultats dans un composant de notre manufacture.

La création d’un projet Reactive Search se fait de la sorte :

  • Création d’un projet React classique
  • Import de Reactive Search et création de la directive ReactiveBase, dans laquelle seront définis l’URL de l’Elastic dans lequel sont contenues les données, l’ensemble des noms des filtres à appliquer (voir documentation), les fonctions de rendering, etc…
  • Définition des composants de filtre, Reactive Search proposant dans son package un ensemble assez complet de composants permettant d’appliquer tout un ensemble de filtres “classiques” (filtre par valeur, par valeurs multiples, par range numériques, range de dates, etc… et filtres customisés au besoin)

Ainsi, une recherche sera exécutée au chargement de la page, avec les filtres par défaut définis par le développeur, puis les données seront automatiquement rechargées à chaque fois qu’un filtre sera modifié par l’utilisateur.

Les fonctions de rendu sont personnalisables pour les filtres comme pour le composant d’affichage des résultats de recherche. Ainsi, il est facilement possible d’obtenir une interface réellement personnalisée avec Reactive Search.

La librairie est encore relativement jeune. Les fonctionnalités avancées telles que la personnalisation des filtres fonctionnent parfois de manière quelque peu aléatoire, il faut donc parfois redoubler d’ingéniosité et de ruse pour arriver à ses fins.

Il est tout de même bon de noter que pour qu’un champ soit recherchable, il doit souvent être indexé dans votre base Elastic.

Conclusion

Reactive Search est un moyen simple et efficace de créer une interface de recherche dans ses données ElasticSearch. La technologie est jeune et a encore besoin d’évoluer afin de couvrir tous les besoins. Elle reste néanmoins intéressante lorsqu’il s’agit de faire un petit moteur de recherche ou une simple interface d’observabilité assez rapidement.