Este es el cliente PHP oficial para Elasticsearch.
Descargue la última versión de Elasticsearch o regístrese para obtener una prueba gratuita de Elastic Cloud .
Consulte la sección Instalación de la documentación de introducción.
Consulte la sección Conexión de la documentación de introducción.
El cliente elasticsearch-php
ofrece más de 400 puntos finales para interactuar con Elasticsearch. Una lista de todos estos puntos finales está disponible en la documentación oficial de las API de Elasticsearch.
Aquí informamos la operación básica que puedes realizar con el cliente: indexar, buscar y eliminar.
Este cliente está versionado y lanzado junto con el servidor Elasticsearch.
Para garantizar la compatibilidad, utilice la versión más reciente de esta biblioteca dentro de la versión principal de la implementación de Enterprise Search correspondiente.
Por ejemplo, para Elasticsearch 7.16
, use 7.16
de esta biblioteca o superior, pero no 8.0
.
El cliente Elasticsearch es compatible con las versiones PHP mantenidas actualmente.
Los clientes de idiomas son compatibles con versiones posteriores; lo que significa que los clientes admiten la comunicación con versiones menores o mayores de Elasticsearch sin interrupciones. Esto no significa que el cliente admita automáticamente nuevas funciones de las versiones más recientes de Elasticsearch; sólo es posible después del lanzamiento de una nueva versión del cliente. Por ejemplo, una versión de cliente 8.12 no admitirá automáticamente las nuevas funciones de la versión 8.13 de Elasticsearch; para eso se requiere la versión de cliente 8.13. Los clientes de lenguaje Elasticsearch solo son compatibles con distribuciones predeterminadas y sin garantías.
Versión de búsqueda elástica | Rama Elasticsearch-PHP | Apoyado |
---|---|---|
principal | principal | |
8.x | 8.x | 8.x |
7.x | 7.x | 7.17 |
La versión 8.0.0 de elasticsearch-php
contiene una nueva implementación en comparación con 7.x. Admite PSR-7 para mensajes HTTP y PSR-18 para comunicaciones de clientes HTTP.
Intentamos reducir las interrupciones de BC tanto como fuera posible con 7.x
pero existen algunas (grandes) diferencias:
ElasticElasticsearch
Exception
, usando el espacio de nombres ElasticElasticsearchException
. Todas las excepciones amplían la interfaz ElasticsearchException
, como en 7.xConnectionPool
en NodePool
. El nombre connection
era ambiguo ya que los objetos son nodos (hosts)Puedes echar un vistazo al archivo BREAKING_CHANGES para obtener más información.
Si necesita simular el cliente Elasticsearch, solo necesita simular un cliente HTTP PSR-18.
Por ejemplo, puede utilizar php-http/mock-client de la siguiente manera:
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!
Estamos utilizando ClientBuilder::setHttpClient()
para configurar el cliente simulado. Puede especificar la respuesta que desea tener utilizando la función addResponse($response)
. Como puede ver, $response
es un objeto de respuesta PSR-7. En este ejemplo utilizamos el objeto NyholmPsr7Response
del proyecto nyholm/psr7. Si está utilizando PHPUnit, incluso puede burlarse de ResponseInterface
de la siguiente manera:
$ response = $ this -> createMock ( ' PsrHttpMessageResponseInterface ' );
Aviso : agregamos un encabezado especial en la respuesta HTTP. Este es el encabezado de verificación del producto y es necesario para garantizar que elasticsearch-php
se comunique con un servidor Elasticsearch 8.0+.
Para obtener más información, puede leer la sección Cliente simulado de la documentación PHP-HTTP.
Si algo no funciona como se esperaba, abra un problema.
Puede consultar los foros de discusión de la comunidad Elastic.
Damos la bienvenida a los contribuyentes al proyecto. Antes de comenzar, alguna información útil...
8.0
utilice la rama 8.0
, para 8.1
utilice la rama 8.1
y así sucesivamente.master
a menos que desee contribuir a la versión de desarrollo del cliente ( master
representa la siguiente versión principal).¡Gracias de antemano por tu contribución!
MIT © elástico