Elasticsearch-py: Elasticsearch mit Python nutzen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einleitung

Elasticsearch ist eine leistungsstarke, verteilte Suchmaschine auf Basis von Apache Lucene, die für Volltextsuche, Logging, Monitoring und Analyse großer Datenmengen entwickelt wurde. Für die Integration mit Python wird der offizielle Client elasticsearch-py verwendet, der vollen Zugriff auf alle Elasticsearch-APIs über Python-Code bietet.

Die Bibliothek elasticsearch-py ermöglicht es Entwicklern, erweiterte Suchfunktionen, Aggregationen und die Verarbeitung großer Datenmengen direkt in Python-Anwendungen umzusetzen – darunter Webdienste, Analysetools und Überwachungssysteme.

Beschreibung der Bibliothek elasticsearch-py

Elasticsearch-py ist der offizielle Python-Client für die Arbeit mit Elasticsearch. Die Bibliothek bietet einen Low-Level-Zugriff auf alle Elasticsearch-Funktionen über die RESTful-API und stellt gleichzeitig eine benutzerfreundliche Python-Schnittstelle bereit.

Hauptmerkmale der Bibliothek:

  • Offizielle Unterstützung: Entwickelt und gewartet vom Elastic-Team
  • Volle Kompatibilität: Unterstützt alle Elasticsearch-Versionen
  • Automatische Knotenerkennung: Erkennt und verbindet sich automatisch mit Cluster-Knoten
  • Verbindungspools: Effizientes Management der Verbindungen zum Cluster
  • Fehlerbehandlung: Integriertes System zur Ausnahmebehandlung
  • Serialisierung: Automatische Umwandlung von Python-Objekten in JSON

Installation und Verbindung zum Cluster

Installation

pip install elasticsearch

Für die Arbeit mit SSL-Zertifikaten:

pip install elasticsearch[async]

Verbindung zu einem lokalen Cluster

from elasticsearch import Elasticsearch

es = Elasticsearch("http://localhost:9200")

Verbindung zu einem entfernten Cluster mit Authentifizierung

es = Elasticsearch(
    "https://your-cluster:9200",
    basic_auth=("user", "password"),
    verify_certs=True
)

Verbindung mit API-Schlüsseln

es = Elasticsearch(
    "https://your-cluster:9200",
    api_key="your_api_key",
    verify_certs=True
)

Verbindung zu mehreren Knoten

es = Elasticsearch(
    [
        "https://node1:9200",
        "https://node2:9200",
        "https://node3:9200"
    ],
    basic_auth=("user", "password")
)

Grundlegende Konzepte von Elasticsearch

  • Index – Analog zu einer Tabelle in relationalen Datenbanken, enthält Dokumente mit ähnlicher Struktur
  • Dokument – JSON-Objekt, das in einem Index gespeichert wird, analog zu einem Datensatz in einer Tabelle
  • Feld – Attribut eines Dokuments, analog zu einer Spalte in einer Tabelle
  • Mapping – Beschreibung der Dokumentstruktur und der Feldtypen
  • Shard – Physische Speichereinheit für Indexdaten
  • Replica – Kopie eines Shards zur Gewährleistung der Ausfallsicherheit

Indexverwaltung

Erstellen von Indizes und Schemata

mapping = {
    "mappings": {
        "properties": {
            "title": {"type": "text", "analyzer": "german"},
            "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)

Löschen eines Index

es.indices.delete(index                    

Empfehlungen