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 Auch in der Bibliothek
Integration von Prometheus-Metriken in C++-Anwendungen: Die Bibliothek prometheus-cpp
Redis-Client in Rust: Vollständige Anleitung zur Arbeit mit der Bibliothek redis-rs
Internationalisierung (i18n) in JavaScript (Node.js): Die Bibliothek i18next
ORM für PHP: Vergleich von Doctrine, Eloquent und Cycle – Codebeispiele