Cliente Elasticsearch para PHP: elasticsearch-php. Guia completo

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Cliente Elasticsearch para PHP: elasticsearch-php



Elasticsearch é um poderoso sistema de busca distribuída e banco de dados analítico, construído sobre o Apache Lucene. Para interagir com ele a partir de aplicações PHP, existe o cliente oficial — elasticsearch-php. Esta biblioteca fornece uma API completa e conveniente para todas as operações: desde a indexação de documentos até consultas complexas de texto completo e agregações.



Instalação e conexão



A instalação é feita via Composer — o gerenciador de pacotes padrão para PHP:



composer require elasticsearch/elasticsearch


Após a instalação, é necessário criar uma instância do cliente, informando o host (ou vários hosts) do seu cluster Elasticsearch:



<?phprequire 'vendor/autoload.php';

use Elastic\\Elasticsearch\\ClientBuilder;

$client = ClientBuilder::create() ->setHosts(['http://localhost:9200']) ->build();?>


Para conexão segura (HTTPS, autenticação), você pode passar parâmetros adicionais:



$client = ClientBuilder::create()    ->setHosts(['https://user:password@my-elastic.cloud:9243'])    ->setSSLVerification(false) // apenas para testes!    ->build();


Operações básicas com dados



Criação de índice



Um índice no Elasticsearch é análogo a um banco de dados no SQL. Antes de salvar dados, você pode criá-lo explicitamente com mapeamento:



$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);


Indexação de documento (adição/atualização)



Para adicionar um único documento, use o método index:



$params = [    'index' => 'products',    'id' => '1',    'body' => [        'title' => 'Notebook ASUS ROG',        'price' => 120000.00,        'created_at' => '2025-01-15'    ]];

$response = $client->index($params);


Se um documento com esse id já existir, ele será sobrescrito. Para atualização parcial, use update.



Obtenção de documento



$params = [    'index' => 'products',    'id' => '1'];

$response = $client->get($params);$document = $response['_source'];echo $document['title']; // Notebook ASUS ROG


Exclusão de documento



$params = [    'index' => 'products',    'id' => '1'];

$response = $client->delete($params);


Busca e filtragem



A funcionalidade mais poderosa do Elasticsearch é a busca em texto completo. Exemplo de busca de produtos pelo nome:



$params = [    'index' => 'products',    'body' => [        'query' => [            'match' => [                'title' => 'notebook'            ]        ]    ]];

$response = $client->search($params);

// Processamento dos resultadosforeach ($response['hits']['hits'] as $hit) { echo 'ID: ' . $hit['_id'] . ', Title: ' . $hit['_source']['title'] . "";}


Você pode combinar condições usando consultas bool:



$params = [    'index' => 'products',    'body' => [        'query' => [            'bool' => [                'must' => [                    ['match' => ['title' => 'notebook']]                ],                'filter' => [                    ['range' => ['price' => ['gte' => 50000                    

Recommendations