Elasticsearch 101 — L’utiliser avec le framework Django

blog / Techno / Python / Elasticsearch 101 — L’utiliser avec le framework Django

Elasticsearch 101 — L’utiliser avec le framework Django

30 Sep, 2021 |
Elasticsearch 101 — L'utiliser avec le framework Django 1 - Webpick

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 :

RDBMSElasticsearch
RowDocument
ColumnField
TableIndex
DatabaseCluster

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 :

Elasticsearch 101 — L'utiliser avec le framework Django 3 - Webpick

Ajoutez ensuite django_Elasticsearch_dsl à INSTALLED_APPS dans le fichier settings de votre application comme suit :

Elasticsearch 101 — L'utiliser avec le framework Django 5 - Webpick

Vous devez également définir ELASTICSEARCH_DSL dans vos paramètres Django. Comme exemple :

Elasticsearch 101 — L'utiliser avec le framework Django 7 - Webpick

Déclarer les données à indexer :

Vous commencez par créer votre modèle dans le fichier models.py :

Elasticsearch 101 — L'utiliser avec le framework Django 9 - Webpick

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 :

Elasticsearch 101 — L'utiliser avec le framework Django 11 - Webpick

Créer des enregistrements:

Pour créer et remplir l’index et le mappage Elasticsearch, utilisez la commande search_index :

Elasticsearch 101 — L'utiliser avec le framework Django 13 - Webpick

Maintenant, en ajoutant un nouvel enregistrement comme suit :

Elasticsearch 101 — L'utiliser avec le framework Django 15 - Webpick

L’objet sera également enregistré dans Elasticsearch.

Rechercher:

Pour obtenir une instance de recherche Elasticsearch-dsl-py, utilisez :

Elasticsearch 101 — L'utiliser avec le framework Django 17 - Webpick

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, Github, Slack, Shopify, Udemy, 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.

Livre Blanc Divi

Accédez au Livre Blanc Divi rédigé par l’équipe Webpick et découvrez comment WordPress peut révolutionner votre vision de l’édition de contenus sur le web !

Disponible en version web en cliquant ici, ou en pdf envoyé à votre boîte email à travers le formulaire suivant :

Catégories

à propos

Webpick a été fondé en 2015 par Taoufik, AKA Tao. Vétéran du web à Marrakech, Tao a construit une belle équipe de spécialistes des technologies, principalement PHP et WordPress. Accaparé par les multiples projets de l’incubateur EBF (Emerging Business Factory) qu’il a confondé, Tao a laissé les rênes de Webpick à son ami et associé David à partir de 2018.

Partager cette page

À propos de l’auteur

Anouar Ait Abdelmalek

Anouar Ait Abdelmalek

Auteur

Bonjour cher lecteur ! Je suis Anouar, un ingénieur de l'ENSA de Marrakech, spécialisé dans Python et Django. Je te souhaite une très bonne lecture !