Qu’est-ce qu’Elasticsearch ?
Elasticsearch est une combinaison d’un magasin de données open source, distribué et hautement évolutif. C’est un moteur de recherche basé sur la bibliothèque Lucene et développé en Java (Ce qui lui permet d’être compatible avec la plupart des plateformes). Il est actuellement l’un des outils les plus populaires qui permettent d’implémenter une recherche de texte libre et intégral extrêmement rapide.
A quoi sert Elasticsearch ?
Elasticsearch prend en charge une variété de cas d’utilisation, il permet à son utilisateur de stocker, rechercher, collecter analyser d’immenses volumes de données d’une manière rapide et en temps quasi réel et de retourner des réponses en quelques millisecondes. Sa capabilité d’obtenir des réponses de recherche rapides revient au fait qu’il recherche un index au lieu de rechercher le texte directement.
Elasticsearch et SGBDR :
Dans Elasticsearch, un index est similaire aux tables du SGBDR. Chaque table représente une collection de lignes tout comme chaque index représente une collection de documents dans Elasticsearch.
Le tableau ci-dessous fournit une comparaison directe entre ces termes :
RDBMS | Elasticsearch |
Row | Document |
Column | Field |
Table | Index |
Database | Cluster |
La technologie Elasticsearch est différente d’un SGBDR traditionnel. Il est préférable d’utiliser une base de données relationnelle comme magasin de données principal et d’injecter uniquement les données requises dans Elasticsearch.
Elasticsearch est conçu pour une recherche de texte rapide. Il possède plusieurs fonctionnalités qui le rendent différent d’un SGBDR. Contrairement au SGBDR, Elasticsearch stocke les données sous forme de document JSON, ce dernier est dénormalisé et ne prend pas en charge les transactions, l’intégrité référentielle, les sous-requêtes et les jointures.
Dans la section qui suit, nous allons parler des différents composants d’Elasticsearch.
Elasticsearch — quelques concepts de base :
Document :
Le document est la pièce indexée par Elasticsearch. Il s’agit d’une collection de champs représentée au format JSON. Chaque document possède un identifiant unique, appartient à un type et réside dans un index. On peut ajouter à un index autant de documents que l’on souhaite.
Index :
L’index s’agit d’une collection de différents types de documents ayant des propriétés similaires ou ayant un lien logique, ainsi que leurs différentes caractéristiques. C’est une sorte de conteneur pour stocker des données.
Node :
Le nœud représente une instance unique en cours d’exécution d’Elasticsearch. Un seul serveur physique et virtuel héberge plusieurs nœuds en fonction des capacités des ressources physiques. Un nœud contient tout ou partie des données et fournit une puissance de calcul pour la recherche de données et l’indexation.
Mapping – Type:
C’est une collection de documents qui partagent un ensemble de champs communs et qui sont présents dans le même index.
Field :
Un champ (field) est la plus petite unité de données individuelle dans Elasticsearch. Il possède un type de données (type de base, type complexes, etc.) et contient une seule donnée. Les champs Elasticsearch peuvent inclure plusieurs valeurs du même type (essentiellement une liste).
Dans cette section nous avons mis les points sur quelques aspects basiques mais importants d’Elasticsearch. Dans la partie suivante, nous allons donner un exemple de comment utiliser Elasticsearch avec le framework Django. Restez à l’écoute!
Utiliser Elasticsearch avec Django :
Installer et configurer :
Commencez par installer Django Elasticsearch DSL à l’aide de la commande suivante :
Ajoutez ensuite django_Elasticsearch_dsl à INSTALLED_APPS dans le fichier settings de votre application comme suit :
Vous devez également définir ELASTICSEARCH_DSL dans vos paramètres Django. Comme exemple :
Déclarer les données à indexer :
Vous commencez par créer votre modèle dans le fichier models.py :
Pour faire fonctionner ce modèle avec Elasticsearch, il faut que vous créiez une sous-classe de django_Elasticsearch_dsl.Document, créiez une classe Index à l’intérieur de la classe Document pour définir vos index, paramètres, noms, etc. Finalement enregistrez la classe à l’aide de register.register_document. Il faut définir la classe Document dans documents.py dans le répertoire de votre application :
Créer des enregistrements:
Pour créer et remplir l’index et le mappage Elasticsearch, utilisez la commande search_index :
Maintenant, en ajoutant un nouvel enregistrement comme suit :
L’objet sera également enregistré dans Elasticsearch.
Rechercher:
Pour obtenir une instance de recherche Elasticsearch-dsl-py, utilisez :
Conclusion :
Elasticsearch est un outil puissant qui permet de faciliter la gestion des grandes tailles de données avec rapidité et efficacité. Il est utilisé par une variété de grandes entreprises à savoir : Stackoverflow, manhattan slots casino, Github, Slack, Shopify, Udemy, Buyessayfriend, Uber, etc.
Dans cette article, nous avons mis en lumière les aspects fondamentaux à connaître sur le moteur Elasticsearch et comment y débuter avec en utilisant le framework Django.