Maison développement back-end tutoriel php Comment utiliser la technologie Elasticsearch en PHP ?

Comment utiliser la technologie Elasticsearch en PHP ?

May 13, 2023 am 08:04 AM
php elasticsearch 技术

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
Copier après la connexion

Ajoutez ensuite la ligne suivante dans php.ini :

extension=elasticsearch.so
Copier après la connexion

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();
Copier après la connexion

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);
Copier après la connexion

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,并包含一个 titlecontent字段。一旦文档被索引并储存到Elasticsearch中,我们就可以搜索它们了。

$params = [
    'index' => 'my_index',
    'type' => 'my_type',
    'body' => [
        'query' => [
            'match' => [
                'title' => 'My first document'
            ]
        ]
    ]
];
$response = $client->search($params);
Copier après la connexion

在上面的代码中,我们使用 search 方法搜索文档。search 方法需要一个参数数组,它至少包含以下键:

  • index:要搜索的索引的名称
  • type:要搜索的文档类型
  • body:包含实际搜索查询的数组

上述代码示例搜索了 my_index 索引中,类型为 my_typetitle 包含 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);
Copier après la connexion

在上面的代码中,我们添加了以下额外的参数:

  • 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);
Copier après la connexion

在上面的代码中,我们使用 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
L'exemple de code ci-dessus crée un index nommé 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éthode search 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
🎜Ce qui précède exemple de code recherchesmon_type et dont le 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 champ titre
  • 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!

Déclaration de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

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 !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Dec 24, 2024 pm 04:42 PM

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.

7 fonctions PHP que je regrette de ne pas connaître auparavant 7 fonctions PHP que je regrette de ne pas connaître auparavant Nov 13, 2024 am 09:42 AM

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.

Comment configurer Visual Studio Code (VS Code) pour le développement PHP Comment configurer Visual Studio Code (VS Code) pour le développement PHP Dec 20, 2024 am 11:31 AM

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

Expliquez les jetons Web JSON (JWT) et leur cas d'utilisation dans les API PHP. Expliquez les jetons Web JSON (JWT) et leur cas d'utilisation dans les API PHP. Apr 05, 2025 am 12:04 AM

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,

Comment analysez-vous et traitez-vous HTML / XML dans PHP? Comment analysez-vous et traitez-vous HTML / XML dans PHP? Feb 07, 2025 am 11:57 AM

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

Programme PHP pour compter les voyelles dans une chaîne Programme PHP pour compter les voyelles dans une chaîne Feb 07, 2025 pm 12:12 PM

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

Expliquez la liaison statique tardive en PHP (statique: :). Expliquez la liaison statique tardive en PHP (statique: :). Apr 03, 2025 am 12:04 AM

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 PHP Magic (__construct, __ destruct, __ call, __get, __set, etc.) et fournir des cas d'utilisation? Quelles sont les méthodes PHP Magic (__construct, __ destruct, __ call, __get, __set, etc.) et fournir des cas d'utilisation? Apr 03, 2025 am 12:03 AM

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.

See all articles