Comment utiliser la technologie Elasticsearch en PHP ?
Avec l'essor des applications Web, les moteurs de recherche sont devenus une fonctionnalité essentielle des applications modernes. Dans le passé, nous utilisions des requêtes SQL pour rechercher des données, mais SQL n'était pas spécialement conçu pour la recherche. Afin de pallier cette lacune, des moteurs de recherche en texte intégral ont été créés, comme Apache Solr, Elasticsearch, etc.
Elasticsearch est un moteur de recherche en texte intégral populaire basé sur Lucene qui fournit des fonctionnalités de recherche et d'analyse distribuées prêtes à l'emploi pour l'analyse de données et les moteurs de recherche en temps réel. Par rapport aux bases de données relationnelles traditionnelles, Elasticsearch peut exécuter des requêtes plus rapidement, mieux gérer des structures de données hautement dynamiques et prend en charge des langages de requête plus riches.
Dans cet article, nous présenterons comment utiliser Elasticsearch dans les applications PHP.
Préparation de l'environnement
Tout d'abord, nous devons installer Elasticsearch sur l'environnement local ou sur le serveur distant. Elasticsearch prend en charge tous les systèmes d'exploitation courants, notamment Windows, macOS et Linux. Vous pouvez obtenir différentes versions du programme d'installation sur le site officiel ou utiliser le gestionnaire de packages pour l'installer.
Pour utiliser la bibliothèque client elasticsearch de PHP, nous devons également installer l'extension client elasticsearch de PHP. Il peut être téléchargé, compilé et installé via PECL ou manuellement. Voici un exemple d'utilisation de PECL :
pecl install elasticsearch
Ajoutez ensuite la ligne suivante dans php.ini :
extension=elasticsearch.so
Une fois l'installation terminée, nous pouvons utiliser PHP pour faire fonctionner Elasticsearch.
Utiliser Elasticsearch en PHP
L'utilisation d'Elasticsearch en PHP nécessite l'utilisation d'une classe ou d'une bibliothèque client Elasticsearch. Actuellement, de nombreuses bibliothèques clientes PHP Elasticsearch sont disponibles, notamment Elasticsearch-PHP, Elasticsearch-DSL et Elastica, entre autres.
Dans cet article, nous utiliserons la bibliothèque Elasticsearch-PHP pour démontrer l'utilisation d'Elasticsearch.
Tout d'abord, nous devons créer un objet client Elasticsearch :
$client = ElasticsearchClientBuilder::create()->build();
Maintenant, nous pouvons utiliser cet objet client pour établir une connexion avec Elasticsearch et effectuer diverses opérations.
Indexation et recherche de documents
Dans Elasticsearch, les documents font référence à des données au format JSON. Grâce à la bibliothèque client PHP Elasticsearch, nous pouvons facilement convertir les tableaux PHP au format JSON et les indexer dans Elasticsearch. Tout d’abord, nous devons sélectionner un index (semblable à une table dans une base de données relationnelle), puis ajouter des données à cet index.
$params = [ 'index' => 'my_index', 'type' => 'my_type', 'id' => '1', 'body' => ['title' => 'My first document', 'content' => 'Hello World'] ]; $response = $client->index($params);
Dans le code ci-dessus, nous avons utilisé la méthode index
pour indexer le document. La méthode index
nécessite un tableau de paramètres, qui contient au moins les clés suivantes : index
方法来索引文档。index
方法需要一个参数数组,它至少包含以下键:
index
:索引的名称type
:文档的类型id
:文档的唯一标识符body
:包含文档数据的数组或JSON格式字符串
上述代码示例创建了一个名为 my_index
的索引,类型为my_type
,文档唯一标识符为1,并包含一个 title
和 content
字段。一旦文档被索引并储存到Elasticsearch中,我们就可以搜索它们了。
$params = [ 'index' => 'my_index', 'type' => 'my_type', 'body' => [ 'query' => [ 'match' => [ 'title' => 'My first document' ] ] ] ]; $response = $client->search($params);
在上面的代码中,我们使用 search
方法搜索文档。search
方法需要一个参数数组,它至少包含以下键:
index
:要搜索的索引的名称type
:要搜索的文档类型body
:包含实际搜索查询的数组
上述代码示例搜索了 my_index
索引中,类型为 my_type
且 title
包含 My first document
的文档。搜索结果是一个JSON格式的响应,其中包含匹配查询的文档。
分页和排序
当搜索结果集很大时,我们可能希望对结果进行分页或排序。我们可以使用Elasticsearch提供的参数来实现这两个功能。
$params = [ 'index' => 'my_index', 'type' => 'my_type', 'body' => [ 'query' => [ 'match' => [ 'title' => 'document' ] ] ], 'size' => 10, 'from' => 0, 'sort' => ['title' => ['order' => 'asc']] ]; $response = $client->search($params);
在上面的代码中,我们添加了以下额外的参数:
size
:每页文档的数量from
:起始文档的位置,用于分页sort
:按title
字段进行升序排序
以上示例获取了前10个匹配 document
的文档,并按 title
字段升序排序。
聚合搜索
Elasticsearch还支持聚合搜索,这是一种在搜索结果集上执行各种分析的技术。例如,我们可以从搜索结果中提取所有 author
字段的唯一值。
$params = [ 'index' => 'my_index', 'type' => 'my_type', 'body' => [ 'aggs' => [ 'unique_authors' => [ 'terms' => [ 'field' => 'author.keyword', 'size' => 10 ] ] ] ] ]; $response = $client->search($params);
在上面的代码中,我们使用 aggs
作为参数数组中的新键,并在其中定义了一个名称为 unique_authors
的聚合搜索。 terms
表示我们将按照 author
字段的值进行分组聚合。field
键用于指定要聚合的字段,size
-
index
: le nom de l'index -
type
: Type de document -
id
: Identifiant unique du document -
corps
: Tableau contenant des données de document ou une chaîne au format JSON
my_index
, le type est my_type
et l'identifiant unique du document vaut 1 et contient les champs title
et content
. Une fois les documents indexés et stockés dans Elasticsearch, nous pouvons les rechercher. rrreee
Dans le code ci-dessus, nous utilisons la méthodesearch
pour rechercher des documents. La méthode search
nécessite un tableau de paramètres contenant au moins les clés suivantes : 🎜-
index
: Le nom de l'index à rechercher - type : le type de document à rechercher
-
body
: un tableau contenant la requête de recherche réelle
titre
contient Mon premier document
dans l'index code>mon_index. Le résultat de la recherche est une réponse au format JSON contenant les documents correspondant à la requête. 🎜🎜Pagination et tri🎜🎜Lorsque l'ensemble des résultats de recherche est volumineux, nous pouvons souhaiter paginer ou trier les résultats. Nous pouvons utiliser les paramètres fournis par Elasticsearch pour réaliser ces deux fonctions. 🎜rrreee🎜Dans le code ci-dessus, nous avons ajouté les paramètres supplémentaires suivants : 🎜-
size
: le nombre de documents par page à partir de : La position du document de départ, utilisé pour la pagination
-
tri
: Trier par ordre croissant par le champtitre
ul> 🎜L'exemple ci-dessus obtient les 10 premiers documents correspondant à
document
et les trie par ordre croissant selon le champ titre
. 🎜🎜Recherche par agrégation🎜🎜Elasticsearch prend également en charge la recherche agrégée, une technique qui effectue diverses analyses sur les ensembles de résultats de recherche. Par exemple, nous pouvons extraire toutes les valeurs uniques du champ auteur
des résultats de recherche. 🎜rrreee🎜Dans le code ci-dessus, nous utilisons aggs
comme nouvelle clé dans le tableau des paramètres et y définissons une recherche agrégée nommée unique_authors
. terms
signifie que nous regrouperons et agrégerons en fonction de la valeur du champ author
. La clé field
est utilisée pour spécifier le champ à agréger, et la clé size
spécifie la taille limite du groupe d'agrégation. 🎜🎜Conclusion🎜Elasticsearch est un puissant moteur de recherche en texte intégral qui est devenu un élément indispensable de nombreuses applications Web modernes. Il peut nous aider à mieux traiter les données et à effectuer des recherches en temps réel. Cet article explique comment utiliser Elasticsearch en PHP et comment indexer, rechercher, paginer et trier des documents. En outre, il présente également comment utiliser Elasticsearch pour la recherche globale. Vous avez désormais appris à utiliser Elasticsearch pour mettre en œuvre des recherches efficaces et rapides dans vos applications PHP.
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Si vous êtes un développeur PHP expérimenté, vous aurez peut-être le sentiment d'y être déjà allé et de l'avoir déjà fait. Vous avez développé un nombre important d'applications, débogué des millions de lignes de code et peaufiné de nombreux scripts pour réaliser des opérations.

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

Ce tutoriel montre comment traiter efficacement les documents XML à l'aide de PHP. XML (Language de balisage extensible) est un langage de balisage basé sur le texte polyvalent conçu à la fois pour la lisibilité humaine et l'analyse de la machine. Il est couramment utilisé pour le stockage de données et

Une chaîne est une séquence de caractères, y compris des lettres, des nombres et des symboles. Ce tutoriel apprendra à calculer le nombre de voyelles dans une chaîne donnée en PHP en utilisant différentes méthodes. Les voyelles en anglais sont a, e, i, o, u, et elles peuvent être en majuscules ou en minuscules. Qu'est-ce qu'une voyelle? Les voyelles sont des caractères alphabétiques qui représentent une prononciation spécifique. Il y a cinq voyelles en anglais, y compris les majuscules et les minuscules: a, e, i, o, u Exemple 1 Entrée: String = "TutorialSpoint" Sortie: 6 expliquer Les voyelles dans la chaîne "TutorialSpoint" sont u, o, i, a, o, i. Il y a 6 yuans au total

Liaison statique (statique: :) implémente la liaison statique tardive (LSB) dans PHP, permettant à des classes d'appel d'être référencées dans des contextes statiques plutôt que de définir des classes. 1) Le processus d'analyse est effectué au moment de l'exécution, 2) Recherchez la classe d'appel dans la relation de succession, 3) il peut apporter des frais généraux de performance.

Quelles sont les méthodes magiques de PHP? Les méthodes magiques de PHP incluent: 1. \ _ \ _ Construct, utilisé pour initialiser les objets; 2. \ _ \ _ Destruct, utilisé pour nettoyer les ressources; 3. \ _ \ _ Appel, gérer les appels de méthode inexistants; 4. \ _ \ _ GET, Implémentez l'accès à l'attribut dynamique; 5. \ _ \ _ SET, Implémentez les paramètres d'attribut dynamique. Ces méthodes sont automatiquement appelées dans certaines situations, améliorant la flexibilité et l'efficacité du code.
