Elasticsearch-Client für PHP: elasticsearch-php. Vollständige Anleitung

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

Elasticsearch-Client für PHP: elasticsearch-php



Elasticsearch ist ein leistungsstarkes verteiltes Suchsystem und eine analytische Datenbank, die auf Apache Lucene basiert. Für die Interaktion mit Elasticsearch aus PHP-Anwendungen gibt es den offiziellen Client – elasticsearch-php. Diese Bibliothek bietet eine praktische und vollständige API für alle Operationen: von der Indexierung von Dokumenten bis hin zu komplexen Volltextabfragen und Aggregationen.



Installation und Verbindung



Die Installation erfolgt über Composer – den Standard-Paketmanager für PHP:



composer require elasticsearch/elasticsearch


Nach der Installation muss eine Client-Instanz erstellt werden, wobei der Host (oder mehrere Hosts) Ihres Elasticsearch-Clusters angegeben wird:



<?phprequire 'vendor/autoload.php';

use Elastic\\Elasticsearch\\ClientBuilder;

$client = ClientBuilder::create() ->setHosts(['http://localhost:9200']) ->build();?>


Für eine sichere Verbindung (HTTPS, Authentifizierung) können zusätzliche Parameter übergeben werden:



$client = ClientBuilder::create()    ->setHosts(['https://user:password@my-elastic.cloud:9243'])    ->setSSLVerification(false) // nur für Tests!    ->build();


Grundlegende Datenoperationen



Index erstellen



Ein Index in Elasticsearch ist das Äquivalent zu einer Datenbank in SQL. Vor dem Speichern von Daten kann er explizit mit einem Mapping erstellt werden:



$params = [    'index' => 'products',    'body' => [        'settings' => [            'number_of_shards' => 1,            'number_of_replicas' => 1        ],        'mappings' => [            'properties' => [                'title' => ['type' => 'text'],                'price' => ['type' => 'float'],                'created_at' => ['type' => 'date']            ]        ]    ]];

$response = $client->indices()->create($params);


Dokument indexieren (hinzufügen/aktualisieren)



Zum Hinzufügen eines einzelnen Dokuments wird die Methode index verwendet:



$params = [    'index' => 'products',    'id' => '1',    'body' => [        'title' => 'Laptop ASUS ROG',        'price' => 120000.00,        'created_at' => '2025-01-15'    ]];

$response = $client->index($params);


Wenn ein Dokument mit dieser id bereits existiert, wird es überschrieben. Für teilweise Aktualisierungen wird update verwendet.



Dokument abrufen



$params = [    'index' => 'products',    'id' => '1'];

$response = $client->get($params);$document = $response['_source'];echo $document['title']; // Laptop ASUS ROG


Dokument löschen



$params = [    'index' => 'products',    'id' => '1'];

$response = $client->delete($params);


Suche und Filterung



Die leistungsstärkste Funktion von Elasticsearch ist die Volltextsuche. Beispiel für die Suche nach Produkten anhand des Namens:



$params = [    'index' => 'products',    'body' => [        'query' => [            'match' => [                'title' => 'Laptop'            ]        ]    ]];

$response = $client->search($params);

// Ergebnisse verarbeitenforeach ($response['hits']['hits'] as $hit) { echo 'ID: ' . $hit['_id'] . ', Titel: ' . $hit['_source']['title'] . "";}


Bedingungen können mit bool-Abfragen kombiniert werden:



$params = [    'index' => 'products',    'body' => [        'query' => [            'bool' => [                'must' => [                    ['match' => ['title' => 'Laptop']]                ],                'filter' => [                    ['range' => ['price' => ['gte' => 50000                    

Empfehlungen