Maîtrisez les fondamentaux des bases de données NoSQL

Maîtrisez les fondamentaux des bases de données NoSQL

Elasticsearch Logo

Dans cet article, nous allons nous pencher sur Elasticsearch, une base de données NoSQL qui se distingue par sa capacité à indexer des documents principalement orientés vers le texte. On pourrait le comparer à un moteur de recherche, mais personnalisable pour répondre parfaitement à vos besoins. Elasticsearch est donc un moteur de recherche qui peut stocker une grande quantité de documents et qui peut être interrogé en temps réel. De plus, son langage de requête offre des possibilités intéressantes pour extraire des statistiques en temps réel. Mais nous en parlerons plus en détail dans le dernier chapitre.

Comprendre le fonctionnement d’un moteur de recherche

Avant de plonger dans le fonctionnement d’Elasticsearch, il est important de comprendre comment fonctionne un moteur de recherche classique. Lorsqu’une requête est effectuée, les résultats renvoyés peuvent parfois sembler déroutants par rapport à ce à quoi on est habitué avec une base de données classique. En réalité, chaque requête entraîne une évaluation de la pertinence des documents par rapport à cette requête, ce qui se traduit par le calcul d’un score pour chaque document. En gros, plus un document ressemble à la requête, plus son score est élevé.

Le moteur de recherche Lucene

Les moteurs de recherche, utilisés notamment dans les géants comme Google, reposent sur le domaine de la “recherche d’information”. Parmi eux, on trouve le moteur de recherche Lucene, un logiciel OpenSource Apache largement utilisé pour créer des moteurs de recherche personnalisés sur des sites web. Elasticsearch utilise justement Lucene pour ses requêtes. Examions cela de plus près.

À lire aussi  Comment obtenir un extrait Kbis en ligne : La méthode pratique et rapide

Le principe du moteur de recherche

Le principe est assez simple : tous les mots d’un texte ont leur importance et il est possible d’effectuer des recherches sur ces mots. Cependant, la présence d’un mot dans un document ne suffit pas pour dire qu’il est pertinent. Il faut être en mesure de déterminer la pertinence du mot pour la requête donnée. Pour ce faire, on utilise la fréquence des mots dans le document, la fréquence des mots dans l’ensemble de la collection de documents, ainsi que la taille du document. Ces informations permettent d’attribuer un poids à chaque mot, qui sera utilisé pour calculer le score de chaque requête à l’aide d’un modèle mathématique basé sur des vecteurs et la fonction cosinus.

Maintenant, n’ayez crainte, nous n’allons pas rentrer dans les détails du modèle mathématique. L’important est de comprendre comment les mots sont traités et comment formuler une requête pour obtenir des résultats pertinents. En effet, c’est là que se situe l’enjeu : avoir un moteur de recherche adapté à nos besoins spécifiques plutôt que de simplement s’appuyer sur Google.

La pertinence des mots

Chaque mot a un poids qui dépend principalement de trois facteurs : sa fréquence dans le texte, la taille du texte et sa fréquence dans l’ensemble de la collection de documents. Pour illustrer le dernier point, prenons l’exemple des mots “Jedi” et “Princess” dans une base de données de films. Le mot “Jedi” est moins fréquent que le mot “Princess”, ce qui explique l’importance accordée à ce mot dans le calcul du score pour les films qui y font référence.

À lire aussi  Amazon: Comment obtenir une facture?

L’importance du schéma et du mapping

Dans le cas d’un moteur de recherche, il est essentiel de déterminer comment les données doivent être lues. Par défaut, le texte est décomposé en mots-clés et les nombres ou les dates sont conservés dans leur format d’origine. Cependant, il est important de se poser la question du traitement des noms d’acteurs ou de réalisateurs. Est-ce que les noms et prénoms doivent être considérés comme des mots-clés, ou doivent-ils être traités comme des données brutes ? Cela dépend des besoins spécifiques de chaque recherche. Par exemple, si nous voulons compter le nombre de films d’un réalisateur, l’utilisation de mots-clés ne permettra pas de regrouper les noms et prénoms. Il faut donc indiquer à Elasticsearch que ces informations doivent être traitées comme des données brutes. C’est là que le mapping intervient.

Elasticsearch : un moteur de texte distribué

Pour fonctionner, Elasticsearch utilise un moteur Lucene qui extrait les mots d’une collection de documents et prépare des colonnes de mots. Elasticsearch est une base de données NoSQL orientée colonnes, où chaque mot est associé à une colonne de documents contenant le poids du mot dans chacun des documents. La couche de distribution d’Elasticsearch permet de router les requêtes, de paralléliser les traitements, de répliquer les données en cas de panne et d’augmenter la capacité d’indexation de Lucene.

Installation d’un serveur Elasticsearch

Pour installer Elasticsearch, il suffit de télécharger les fichiers binaires correspondants à votre système d’exploitation. Une fois téléchargés, vous pouvez ouvrir l’archive et vous rendre dans le répertoire “bin” qui contient les fichiers exécutables pour démarrer le serveur.

  • Pour Linux et Mac : ./bin/elasticsearch
  • Pour Windows : ./bin/elasticsearch.bat

Une fois le serveur lancé, vous pouvez ouvrir votre navigateur et accéder à l’adresse http://localhost:9200 pour obtenir les informations sur le cluster Elasticsearch.

À lire aussi  Comment divorcer et combien ça coûte : guide complet

Importation de données

Maintenant que le serveur Elasticsearch est opérationnel, il est temps d’importer nos données dans un index. Pour cela, nous utiliserons l’utilitaire “curl” pour envoyer des requêtes HTTP à l’API REST d’Elasticsearch. Vous pouvez envoyer la requête suivante pour importer le fichier “movies_elastic.json” :

curl -XPUT -H "Content-Type: application/json" localhost:9200/_bulk -data-binary @movies_elastic.json

Schéma et mapping

Le schéma, également appelé mapping, est la façon dont Elasticsearch interprète les données indexées. Par défaut, le texte est décomposé en mots-clés, mais il est important de préciser comment chaque champ doit être analysé. Le mapping est automatiquement généré lors de l’importation des données, mais il est possible de le consulter et de le modifier si besoin. Pour consulter le mapping d’un index, vous pouvez utiliser l’URL suivante : http://localhost:9200/movies/?pretty.

Il est important de noter que le mapping d’un index ne peut pas être modifié une fois qu’il a été créé. Si vous avez besoin d’ajuster le mapping, vous devrez créer un nouvel index avec le mapping approprié et importer les données dans ce nouvel index.

Maintenant que nous avons importé les données dans Elasticsearch, nous allons voir comment interroger l’index avec différents types de requêtes.


Architecture d'Elasticsearch
Architecture d’Elasticsearch


Conclusion

Dans cet article, nous avons exploré les bases de données NoSQL et plus particulièrement Elasticsearch. Nous avons vu comment fonctionne un moteur de recherche, le rôle de Lucene dans Elasticsearch, comment installer un serveur Elasticsearch, comment importer des données et comment gérer le schéma des index. Dans les prochains articles, nous approfondirons nos connaissances sur les requêtes Elasticsearch et les différentes fonctionnalités offertes par cette base de données NoSQL puissante et flexible.

Pour plus d’informations sur Elasticsearch, consultez la documentation officielle à cette adresse : https://www.elastic.co/guide/index.html