Introduction
Elasticsearch est un moteur de recherche distribué puissant basé sur Apache Lucene, conçu pour la recherche en texte intégral, la journalisation, la surveillance et l'analyse de grands volumes de données. Pour l'intégrer avec Python, le client officiel elasticsearch-py offre un accès complet à toutes les API Elasticsearch via du code Python.
La bibliothèque elasticsearch-py permet aux développeurs d'implémenter des recherches avancées, des agrégations et le traitement de données massives directement dans leurs applications Python, qu'il s'agisse de services web, d'outils d'analyse ou de systèmes de monitoring.
Présentation de la bibliothèque elasticsearch-py
Elasticsearch-py est le client Python officiel pour interagir avec Elasticsearch. Cette bibliothèque offre un accès bas niveau à toutes les fonctionnalités d'Elasticsearch via une API RESTful, tout en fournissant une interface Python intuitive.
Caractéristiques principales :
- Support officiel : Développée et maintenue par l'équipe Elastic
- Compatibilité totale : Prend en charge toutes les versions d'Elasticsearch
- Découverte automatique des nœuds : Détecte et se connecte automatiquement aux nœuds du cluster
- Pools de connexions : Gestion efficace des connexions au cluster
- Gestion des erreurs : Système intégré de gestion des exceptions
- Sérialisation : Conversion automatique des objets Python en JSON
Installation et connexion au cluster
Installation
pip install elasticsearch
Pour utiliser les certificats SSL :
pip install elasticsearch[async]
Connexion à un cluster local
from elasticsearch import Elasticsearch
es = Elasticsearch("http://localhost:9200")
Connexion à un cluster distant avec authentification
es = Elasticsearch(
"https://votre-cluster:9200",
basic_auth=("utilisateur", "motdepasse"),
verify_certs=True
)
Connexion avec clés API
es = Elasticsearch(
"https://votre-cluster:9200",
api_key="votre_cle_api",
verify_certs=True
)
Connexion à plusieurs nœuds
es = Elasticsearch(
[
"https://noeud1:9200",
"https://noeud2:9200",
"https://noeud3:9200"
],
basic_auth=("utilisateur", "motdepasse")
)
Concepts fondamentaux d'Elasticsearch
- Index — équivalent d'une table en base relationnelle, contient des documents de structure similaire
- Document — objet JSON stocké dans un index, équivalent d'un enregistrement
- Champ — attribut d'un document, équivalent d'une colonne
- Mapping — description de la structure du document et des types de champs
- Shard — unité physique de stockage des données d'un index
- Réplica — copie d'un shard pour assurer la tolérance aux pannes
Gestion des index
Création d'index et de schémas
mapping = {
"mappings": {
"properties": {
"title": {"type": "text", "analyzer": "french"},
"tags": {"type": "keyword"},
"published": {"type": "date"},
"content": {"type": "text"},
"author": {"type": "keyword"},
"views": {"type": "integer"}
}
},
"settings": {
"number_of_shards": 1,
"number_of_replicas": 0
}
}
es.indices.create(index="articles", body=mapping)
Suppression d'un index
es.indices.delete(index Aussi dans la bibliothèque
ORM pour TypeScript : comparaison de TypeORM, Prisma et MikroORM
Traitement d'images en Node.js : bibliothèques Sharp, Jimp et gm
Tests en Swift (iOS/macOS) : frameworks et outils
Autorisation et authentification en Go (Golang) : guide complet
Rate Limiting en Java : bibliothèques, algorithmes et implémentation