Este é o cliente PHP oficial do Elasticsearch.
Baixe a versão mais recente do Elasticsearch ou inscreva-se para uma avaliação gratuita do Elastic Cloud .
Consulte a seção Instalação da documentação de introdução.
Consulte a seção Conexão da documentação de introdução.
O cliente elasticsearch-php
oferece mais de 400 endpoints para interagir com o Elasticsearch. Uma lista de todos esses endpoints está disponível na documentação oficial das APIs do Elasticsearch.
Aqui relatamos a operação básica que você pode realizar com o cliente: indexar, pesquisar e excluir.
Este cliente é versionado e lançado junto com o servidor Elasticsearch.
Para garantir a compatibilidade, use a versão mais recente desta biblioteca na versão principal da implementação do Enterprise Search correspondente.
Por exemplo, para Elasticsearch 7.16
, use 7.16
desta biblioteca ou superior, mas não 8.0
.
O cliente Elasticsearch é compatível com versões PHP mantidas atualmente.
Os clientes de idiomas são compatíveis com versões futuras; o que significa que os clientes suportam a comunicação com versões secundárias maiores ou iguais do Elasticsearch sem interrupção. Isso não significa que o cliente oferece suporte automaticamente aos novos recursos das versões mais recentes do Elasticsearch; isso só é possível após o lançamento de uma nova versão do cliente. Por exemplo, uma versão do cliente 8.12 não suportará automaticamente os novos recursos da versão 8.13 do Elasticsearch; a versão do cliente 8.13 é necessária para isso. Os clientes da linguagem Elasticsearch são compatíveis apenas com distribuições padrão e sem garantias.
Versão do Elasticsearch | Filial Elasticsearch-PHP | Suportado |
---|---|---|
principal | principal | |
8.x | 8.x | 8.x |
7.x | 7.x | 7.17 |
A versão 8.0.0 do elasticsearch-php
contém uma nova implementação em comparação com 7.x. Suporta PSR-7 para mensagens HTTP e PSR-18 para comunicações de cliente HTTP.
Tentamos reduzir ao máximo as quebras de BC com 7.x
mas existem algumas (grandes) diferenças:
ElasticElasticsearch
Exception
, usando o namespace ElasticElasticsearchException
. Todas as exceções estendem a interface ElasticsearchException
, como em 7.xConnectionPool
em NodePool
. A nomenclatura connection
era ambígua, pois os objetos são nós (hosts)Você pode dar uma olhada no arquivo BREAKING_CHANGES para obter mais informações.
Se você precisar simular o cliente Elasticsearch, basta simular um cliente HTTP PSR-18.
Por exemplo, você pode usar o php-http/mock-client da seguinte forma:
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 usando ClientBuilder::setHttpClient()
para definir o cliente simulado. Você pode especificar a resposta que deseja usando a função addResponse($response)
. Como você pode ver, $response
é um objeto de resposta PSR-7. Neste exemplo usamos o objeto NyholmPsr7Response
do projeto nyholm/psr7. Se você estiver usando PHPUnit você pode até zombar do ResponseInterface
da seguinte maneira:
$ response = $ this -> createMock ( ' PsrHttpMessageResponseInterface ' );
Aviso : adicionamos um cabeçalho especial na resposta HTTP. Este é o cabeçalho de verificação do produto e é necessário para garantir que elasticsearch-php
esteja se comunicando com um servidor Elasticsearch 8.0+.
Para obter mais informações, você pode ler a seção Cliente simulado da documentação do PHP-HTTP.
Se algo não estiver funcionando conforme o esperado, abra um problema.
Você pode conferir os fóruns de discussão da comunidade Elastic.
Congratulamo-nos com colaboradores do projeto. Antes de começar, algumas informações úteis...
8.0
use o branch 8.0
, para 8.1
use o branch 8.1
e assim por diante.master
, a menos que queira contribuir para a versão de desenvolvimento do cliente ( master
representa a próxima versão principal).Agradecemos antecipadamente pela sua contribuição!
MIT © Elástica