Elasticsearch-py : guide pratique pour Python

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

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                    

Recommendations