Client Elasticsearch pour PHP : elasticsearch-php. Guide complet

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Client Elasticsearch pour PHP : elasticsearch-php



Elasticsearch est un puissant moteur de recherche distribué et une base de données analytique, construit sur Apache Lucene. Pour interagir avec lui depuis des applications PHP, il existe un client officiel — elasticsearch-php. Cette bibliothèque fournit une API complète et pratique pour toutes les opérations : de l'indexation de documents aux requêtes complexes de texte intégral et aux agrégations.



Installation et connexion



L'installation se fait via Composer — le gestionnaire de paquets standard pour PHP :



composer require elasticsearch/elasticsearch


Après l'installation, il faut créer une instance du client en spécifiant l'hôte (ou plusieurs hôtes) de votre cluster Elasticsearch :



<?phprequire 'vendor/autoload.php';

use Elastic\\Elasticsearch\\ClientBuilder;

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


Pour une connexion sécurisée (HTTPS, authentification), vous pouvez passer des paramètres supplémentaires :



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


Opérations principales avec les données



Création d'un index



Un index dans Elasticsearch est l'équivalent d'une base de données en SQL. Avant de sauvegarder des données, vous pouvez le créer explicitement avec un mapping :



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


Indexation d'un document (ajout/mise à jour)



Pour ajouter un document, on utilise la méthode index :



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

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


Si un document avec cet id existe déjà, il sera écrasé. Pour une mise à jour partielle, on utilise update.



Récupération d'un document



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

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


Suppression d'un document



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

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


Recherche et filtrage



La fonctionnalité la plus puissante d'Elasticsearch est la recherche en texte intégral. Exemple de recherche de produits par nom :



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

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

// Traitement des résultatsforeach ($response['hits']['hits'] as $hit) { echo 'ID: ' . $hit['_id'] . ', Title: ' . $hit['_source']['title'] . "";}


On peut combiner les conditions avec des requêtes bool :



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

Recommendations