Il s'agit du client PHP officiel pour Elasticsearch.
Téléchargez la dernière version d'Elasticsearch ou inscrivez-vous pour un essai gratuit d'Elastic Cloud .
Reportez-vous à la section Installation de la documentation de démarrage.
Reportez-vous à la section Connexion de la documentation de démarrage.
Le client elasticsearch-php
propose plus de 400 points de terminaison pour interagir avec Elasticsearch. Une liste de tous ces points de terminaison est disponible dans la documentation officielle des API Elasticsearch.
Nous avons rapporté ici l'opération de base que vous pouvez effectuer avec le client : indexer, rechercher et supprimer.
Ce client est versionné et publié avec le serveur Elasticsearch.
Pour garantir la compatibilité, utilisez la version la plus récente de cette bibliothèque dans la version majeure de l'implémentation Enterprise Search correspondante.
Par exemple, pour Elasticsearch 7.16
, utilisez 7.16
de cette bibliothèque ou supérieure, mais pas 8.0
.
Le client Elasticsearch est compatible avec les versions PHP actuellement maintenues.
Les clients linguistiques sont compatibles avec les versions ultérieures ; ce qui signifie que les clients prennent en charge la communication avec des versions mineures supérieures ou égales d'Elasticsearch sans interruption. Cela ne signifie pas que le client prend automatiquement en charge les nouvelles fonctionnalités des versions plus récentes d'Elasticsearch ; cela n'est possible qu'après la sortie d'une nouvelle version client. Par exemple, une version client 8.12 ne prendra pas automatiquement en charge les nouvelles fonctionnalités de la version 8.13 d'Elasticsearch, la version client 8.13 est requise pour cela. Les clients du langage Elasticsearch ne sont que rétrocompatibles avec les distributions par défaut et sans garantie.
Version d'Elasticsearch | Branche Elasticsearch-PHP | Soutenu |
---|---|---|
principal | principal | |
8.x | 8.x | 8.x |
7.x | 7.x | 7.17 |
La version 8.0.0 d' elasticsearch-php
contient une nouvelle implémentation par rapport à la version 7.x. Il prend en charge PSR-7 pour les messages HTTP et PSR-18 pour les communications client HTTP.
Nous avons essayé de réduire au maximum les pauses BC avec 7.x
mais il y a quelques (grosses) différences :
ElasticElasticsearch
Exception
en utilisant l'espace de noms ElasticElasticsearchException
. Toutes les exceptions étendent l'interface ElasticsearchException
, comme dans 7.xConnectionPool
dans NodePool
. Le nom connection
était ambigu puisque les objets sont des nœuds (hôtes)Vous pouvez consulter le fichier BREAKING_CHANGES pour plus d'informations.
Si vous avez besoin de vous moquer du client Elasticsearch, il vous suffit de vous moquer d'un client HTTP PSR-18.
Par exemple, vous pouvez utiliser le php-http/mock-client comme suit :
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!
Nous utilisons ClientBuilder::setHttpClient()
pour définir le client fictif. Vous pouvez spécifier la réponse que vous souhaitez obtenir à l'aide de la fonction addResponse($response)
. Comme vous pouvez le voir, $response
est un objet de réponse PSR-7. Dans cet exemple, nous avons utilisé l'objet NyholmPsr7Response
du projet nyholm/psr7. Si vous utilisez PHPUnit, vous pouvez même vous moquer de ResponseInterface
comme suit :
$ response = $ this -> createMock ( ' PsrHttpMessageResponseInterface ' );
Remarque : nous avons ajouté un en-tête spécial dans la réponse HTTP. Il s'agit de l'en-tête de vérification du produit, et il est requis pour garantir qu'elasticsearch elasticsearch-php
communique avec un serveur Elasticsearch 8.0+.
Pour plus d'informations, vous pouvez lire la section Client simulé de la documentation PHP-HTTP.
Si quelque chose ne fonctionne pas comme prévu, veuillez ouvrir un problème.
Vous pouvez consulter les forums de discussion de la communauté Elastic.
Nous accueillons les contributeurs au projet. Avant de commencer, quelques informations utiles...
8.0
veuillez utiliser la branche 8.0
, pour la 8.1
utilisez la branche 8.1
et ainsi de suite.master
sauf si vous souhaitez contribuer à la version de développement du client ( master
représente la prochaine version majeure).Merci d'avance pour votre contribution !
MIT © Élastique