Dies ist der offizielle PHP-Client für Elasticsearch.
Laden Sie die neueste Version von Elasticsearch herunter oder melden Sie sich für eine kostenlose Testversion von Elastic Cloud an.
Weitere Informationen finden Sie im Abschnitt „Installation“ der Dokumentation „Erste Schritte“.
Weitere Informationen finden Sie im Abschnitt „Anschließen“ der Dokumentation „Erste Schritte“.
Der elasticsearch-php
Client bietet über 400 Endpunkte für die Interaktion mit Elasticsearch. Eine Liste aller dieser Endpunkte finden Sie in der offiziellen Dokumentation der Elasticsearch-APIs.
Hier haben wir die grundlegenden Vorgänge beschrieben, die Sie mit dem Client ausführen können: Indizieren, Suchen und Löschen.
Dieser Client wird zusammen mit dem Elasticsearch-Server versioniert und veröffentlicht.
Um die Kompatibilität zu gewährleisten, verwenden Sie die neueste Version dieser Bibliothek innerhalb der Hauptversion der entsprechenden Enterprise Search-Implementierung.
Verwenden Sie beispielsweise für Elasticsearch 7.16
7.16
dieser Bibliothek oder höher, jedoch nicht 8.0
.
Der Elasticsearch-Client ist mit aktuell gepflegten PHP-Versionen kompatibel.
Sprachclients sind aufwärtskompatibel; Dies bedeutet, dass Clients die Kommunikation mit höheren oder gleichwertigen Nebenversionen von Elasticsearch ohne Unterbrechung unterstützen. Dies bedeutet nicht, dass der Client automatisch neue Funktionen neuerer Elasticsearch-Versionen unterstützt; Dies ist erst nach der Veröffentlichung einer neuen Client-Version möglich. Beispielsweise unterstützt eine 8.12-Client-Version nicht automatisch die neuen Funktionen der 8.13-Version von Elasticsearch, hierfür ist die 8.13-Client-Version erforderlich. Elasticsearch-Sprachclients sind nur abwärtskompatibel mit Standarddistributionen und es werden keine Garantien übernommen.
Elasticsearch-Version | Elasticsearch-PHP-Zweig | Unterstützt |
---|---|---|
hauptsächlich | hauptsächlich | |
8.x | 8.x | 8.x |
7.x | 7.x | 7.17 |
Die Version 8.0.0 von elasticsearch-php
enthält im Vergleich zu 7.x eine neue Implementierung. Es unterstützt PSR-7 für HTTP-Nachrichten und PSR-18 für HTTP-Client-Kommunikation.
Wir haben versucht, die BC-Unterbrechungen mit 7.x
so weit wie möglich zu reduzieren, aber es gibt einige (große) Unterschiede:
ElasticElasticsearch
Exception
-Modell geändert und den Namespace ElasticElasticsearchException
verwendet. Alle Ausnahmen erweitern die ElasticsearchException
Schnittstelle, wie in 7.xConnectionPool
in NodePool
geändert. Die connection
war nicht eindeutig, da es sich bei den Objekten um Knoten (Hosts) handelt.Weitere Informationen finden Sie in der Datei BREAKING_CHANGES.
Wenn Sie den Elasticsearch-Client verspotten müssen, müssen Sie lediglich einen PSR-18-HTTP-Client verspotten.
Sie können den php-http/mock-client beispielsweise wie folgt verwenden:
use Elastic Elasticsearch ClientBuilder ;
use Elastic Elasticsearch Response Elasticsearch ;
use Http Mock Client ;
use Nyholm Psr7 Response ;
$ mock = new Client (); // This is the mock client
$ client = ClientBuilder:: create ()
-> setHttpClient ( $ mock )
-> build ();
// This is a PSR-7 response
$ response = new Response (
200 ,
[Elasticsearch:: HEADER_CHECK => Elasticsearch:: PRODUCT_NAME ],
' This is the body! '
);
$ mock -> addResponse ( $ response );
$ result = $ client -> info (); // Just calling an Elasticsearch endpoint
echo $ result -> asString (); // This is the body!
Wir verwenden ClientBuilder::setHttpClient()
um den Mock-Client festzulegen. Mit der Funktion addResponse($response)
können Sie die gewünschte Antwort angeben. Wie Sie sehen können, handelt es sich bei $response
um ein PSR-7-Antwortobjekt. In diesem Beispiel haben wir das NyholmPsr7Response
Objekt aus dem Nyholm/psr7-Projekt verwendet. Wenn Sie PHPUnit verwenden, können Sie das ResponseInterface
sogar wie folgt verspotten:
$ response = $ this -> createMock ( ' PsrHttpMessageResponseInterface ' );
Hinweis : Wir haben der HTTP-Antwort einen speziellen Header hinzugefügt. Dies ist der Header für die Produktprüfung und wird benötigt, um sicherzustellen, dass elasticsearch-php
mit einem Elasticsearch-Server 8.0+ kommuniziert.
Weitere Informationen finden Sie im Abschnitt „Mock-Client“ der PHP-HTTP-Dokumentation.
Wenn etwas nicht wie erwartet funktioniert, öffnen Sie bitte ein Problem.
Sie können sich die Diskussionsforen der Elastic-Community ansehen.
Wir freuen uns über Mitwirkende am Projekt. Bevor Sie beginnen, einige nützliche Informationen ...
8.0
senden möchten, verwenden Sie bitte den 8.0
-Zweig, für 8.1
den 8.1
Zweig und so weiter.master
es sei denn, Sie möchten zur Entwicklungsversion des Clients beitragen ( master
stellt die nächste Hauptversion dar).Vielen Dank im Voraus für Ihren Beitrag!
MIT © Elastic