Maison  >  Article  >  développement back-end  >  Comment créer une fonction de recherche en temps réel à l'aide de PHP et Elasticsearch

Comment créer une fonction de recherche en temps réel à l'aide de PHP et Elasticsearch

WBOY
WBOYoriginal
2023-07-18 11:30:20885parcourir

Comment créer des capacités de recherche en temps réel à l'aide de PHP et Elasticsearch

Elasticsearch est un moteur de recherche distribué open source qui peut être utilisé pour récupérer et analyser de grandes quantités de données rapidement et efficacement. Et PHP est un langage de script populaire couramment utilisé pour le développement Web. Cet article explique comment utiliser PHP et Elasticsearch pour créer des fonctions de recherche en temps réel.

Étape 1 : Installer et configurer Elasticsearch

Vous devez d'abord installer le serveur Elasticsearch. Vous pouvez télécharger le package d'installation du système d'exploitation correspondant depuis le site officiel et l'installer conformément à la documentation officielle. Une fois l'installation terminée, vous devez modifier le fichier de configuration Elasticsearch elasticsearch.yml, par exemple :

cluster.name: my-cluster

Modifiez cluster.name en un nom de cluster personnalisé.

Étape 2 : Créer des index et des mappages

Dans Elasticsearch, les données sont organisées en un ou plusieurs index. Chaque index contient plusieurs types et chaque type contient plusieurs documents. Vous devez d’abord créer un index et définir son mappage.

Vous pouvez utiliser l'API RESTful d'Elasticsearch pour créer des index et des mappages. Créez un index en envoyant une requête PUT à un point de terminaison spécifié sur le serveur.

Par exemple, en supposant que nous souhaitons créer un index appelé « produits », nous pouvons utiliser le code suivant :

<?php

$ch = curl_init();

$url = 'http://localhost:9200/products';

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_PUT, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);

curl_close($ch);

echo $response;
?>

Ce code utilise la bibliothèque curl pour envoyer une requête PUT au serveur Elasticsearch, en spécifiant l'URL de l'index. En définissant l'option CURLOPT_PUT sur true, nous disons à la bibliothèque curl d'envoyer une requête PUT. Enfin, la requête est envoyée en exécutant la fonction curl_exec.

De la même manière que vous créez un index, vous pouvez également utiliser une requête PUT pour créer un mappage d'index.

Étape 3 : Indexer les documents

Après avoir créé l'index et défini le mappage, il est temps d'indexer les documents. Un document est l'unité de base d'Elasticsearch. C'est un objet JSON qui contient un ensemble de champs.

Par exemple, si l'on souhaite indexer un document nommé "product1", on peut utiliser le code suivant :

<?php

$ch = curl_init();

$url = 'http://localhost:9200/products/product/1';

$data = '{
  "title": "Product 1",
  "description": "This is product 1"
}';

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);

curl_close($ch);

echo $response;
?>

Ce code utilise la bibliothèque curl pour envoyer une requête PUT au serveur Elasticsearch, en précisant l'URL du document. L'URL d'un document comprend le nom de l'index, le type et l'ID du document. La partie données est une chaîne JSON contenant des champs de titre et de description.

De la même manière que vous indexez des documents, vous pouvez également utiliser des requêtes PUT pour mettre à jour des documents.

Étape 4 : Rechercher dans les documents

Une fois les documents indexés, vous pouvez utiliser la fonction de recherche d'Elasticsearch pour récupérer les documents.

Par exemple, si l'on souhaite rechercher des documents dont le champ titre contient le mot-clé "product", on peut utiliser le code suivant :

<?php

$ch = curl_init();

$url = 'http://localhost:9200/products/_search';

$data = '{
  "query": {
    "match": {
      "title": "product"
    }
  }
}';

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);

curl_close($ch);

echo $response;
?>

Ce code utilise la bibliothèque curl pour envoyer une requête POST au serveur Elasticsearch, en précisant le URL de recherche. L'URL recherchée comprend le nom de l'index et _search. La partie données est une chaîne JSON contenant des conditions de requête.

Étape 5 : Traiter les résultats de la recherche

Si nécessaire, les résultats de la recherche renvoyés peuvent être traités davantage. Les résultats de la recherche sont renvoyés au format JSON, qui peut être analysé et affiché selon les besoins.

Par exemple, nous pouvons utiliser le code suivant pour analyser les résultats JSON et afficher les résultats de la recherche :

<?php

$response = json_decode($response, true);

$hits = $response['hits']['hits'];

foreach ($hits as $hit) {
  $source = $hit['_source'];
  $title = $source['title'];
  $description = $source['description'];

  echo "Title: $title
";
  echo "Description: $description
";
  echo "
";
}
?>

Ce code convertit d'abord les résultats de la recherche en un tableau associatif, puis extrait les champs de titre et de description de chaque document et les affiche .

Grâce aux étapes ci-dessus, nous pouvons utiliser PHP et Elasticsearch pour créer une fonction de recherche en temps réel. En configurant le serveur Elasticsearch, en créant des index et des mappages, en indexant des documents et en recherchant des documents, nous pouvons créer un puissant moteur de recherche en temps réel.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn