Elasticsearch-Client für PHP (elasticsearch-php): Leistungsstarkes Tool für Suche und Analyse
\n\nElasticsearch ist ein verteiltes Such- und Analysesystem, das auf Apache Lucene basiert. Es ermöglicht das Speichern, Durchsuchen und Analysieren großer Datenmengen nahezu in Echtzeit. Für die Interaktion mit Elasticsearch aus PHP-Anwendungen gibt es den offiziellen Client – elasticsearch-php. Diese Bibliothek bietet eine praktische API für alle Operationen: von der Indizierung von Dokumenten bis hin zu komplexen Suchabfragen und Aggregationen.
\n\nIn diesem Artikel werden wir die Installation, Konfiguration und die wichtigsten Funktionen von elasticsearch-php im Detail behandeln. Sie erfahren, wie Sie eine Verbindung zu einem Cluster herstellen, einen Index erstellen, Dokumente hinzufügen, eine Suche durchführen und erweiterte Funktionen wie Filterung und Datenaggregation nutzen.
\n\nInstallation von elasticsearch-php
\n\nDie Bibliothek wird über Composer verteilt. Führen Sie zur Installation folgenden Befehl im Stammverzeichnis Ihres Projekts aus:
\n\ncomposer require elasticsearch/elasticsearch\n\nNach der Installation erscheint die Abhängigkeit in der Datei composer.json. Stellen Sie sicher, dass Sie PHP Version 7.4 oder höher sowie die Erweiterung json installiert haben.
Verbindung zum Elasticsearch-Server herstellen
\n\nDer erste Schritt ist die Erstellung eines Clients. Für einen lokalen Server (standardmäßig hört Elasticsearch auf Port 9200) sieht der Code wie folgt aus:
\n\n<?php\nrequire 'vendor/autoload.php';\n\nuse Elastic\\Elasticsearch\\ClientBuilder;\n\n$client = ClientBuilder::create()\n ->setHosts(['localhost:9200'])\n ->build();\n?>\n\nWenn Ihr Server eine Authentifizierung erfordert (z. B. über Benutzername/Passwort oder API-Key), übergeben Sie die Parameter:
\n\n$client = ClientBuilder::create()\n ->setHosts(['https://user:pass@localhost:9200'])\n ->setSSLVerification(false) // nur für die Entwicklung\n ->build();\n\nArbeiten mit Indizes und Dokumenten
\n\nElasticsearch speichert Daten in Indizes (vergleichbar mit Tabellen in SQL). Erstellen wir einen Index products mit einem einfachen Mapping:
$params = [\n 'index' => 'products',\n 'body' => [\n 'settings' => [\n 'number_of_shards' => 1,\n 'number_of_replicas' => 0\n ],\n 'mappings' => [\n 'properties' => [\n 'title' => ['type' => 'text'],\n 'price' => ['type' => 'float'],\n 'description' => ['type' => 'text'],\n 'category' => ['type' => 'keyword']\n ]\n ]\n ]\n];\n\n$response = $client->indices()->create($params);\n\nJetzt fügen wir einige Dokumente hinzu:
\n\n$documents = [\n ['title' => 'Dell XPS 15 Laptop', 'price' => 1200.00, 'description' => 'Leistungsstarkes Ultrabook für die Arbeit', 'category' => 'electronics'],\n ['title' => 'Buch "PHP für Profis"', 'price' => 45.50, 'description' => 'Fortgeschrittenes PHP-Studium', 'category' => 'books'],\n ['title' => 'Kopfhörer Sony WH-1000XM5', 'price' => 350.00, 'description' => 'Kabellose Kopfhörer mit Geräuschunterdrückung', 'category' => 'electronics']\n];\n\nforeach ($documents as $id => $doc) {\n $params = [\n 'index' => 'products',\n 'id' => $id + 1,\n 'body' => $doc\n ];\n $response = $client->index($params);\n}\n\nSuche nach Dokumenten
\n\nFühren wir eine Volltextsuche im Feld title durch:
$params = [\n 'index' => 'products',\n 'body' => [\n 'query' => [\n 'match' => [\n 'title' => 'Laptop'\n ]\n ]\n ]\n];\n\n$response = $client->search($params);\n$hits = $response['hits']['hits'];\n\nforeach ($hits as $hit) {\n echo "ID: " . $hit['_id'] . " | Titel: " . $hit['_source']['title'];\n} Auch in der Bibliothek
PDF-Generierung in JavaScript: Bibliothek pdf-lib
Prost für Rust: Komplettes Tutorial mit Beispielen
ORM für Go (Golang): Vergleich und Beispiele beliebter Bibliotheken
JWT-Token in C++: Implementierung und Verifizierung mit jwt-cpp
Datenvalidierung in Java: Überblick über Bibliotheken und Werkzeuge