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/elasticsearchNach 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 ROGDokument 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 Auch in der Bibliothek
Elasticsearch REST-Client für Kotlin: Leitfaden zur Verwendung
E-Mail-Versand mit Go
Caching in Kotlin: Redis, Caffeine und Ehcache – ein vollständiger Leitfaden
Geolokalisierung und Karten in Swift für iOS/macOS: vollständiger Leitfaden