Maison  >  Article  >  développement back-end  >  Comment utiliser Elasticsearch pour implémenter des fonctions de recherche dans le développement PHP

Comment utiliser Elasticsearch pour implémenter des fonctions de recherche dans le développement PHP

WBOY
WBOYoriginal
2023-06-27 12:59:201501parcourir

Avec le développement d'Internet, l'importance des moteurs de recherche a attiré de plus en plus d'attention. Les moteurs de recherche doivent non seulement être capables de rechercher rapidement du contenu pertinent, mais également être efficaces, stables et évolutifs. En tant que moteur de recherche distribué populaire, Elasticsearch est devenu le premier choix de nombreuses entreprises dans le domaine de la recherche. Cet article explique comment utiliser le développement PHP et le combiner avec Elasticsearch pour implémenter des fonctions de recherche.

  1. Installer Elasticsearch

Avant de commencer, nous devons d'abord installer Elasticsearch. Elasticsearch est une application Java, nous devons donc d'abord installer Java et télécharger le fichier compressé d'Elasticsearch. Ensuite, décompressez le fichier dans le répertoire spécifié.

  1. Création d'un index

La création d'un index est la première étape du stockage des documents que nous souhaitons rechercher dans Elasticsearch. Normalement, nous pouvons considérer un index comme une table dans une base de données, constituée d’un ensemble de documents (lignes de données).

En PHP, nous pouvons utiliser le client Elasticsearch-PHP pour interagir avec Elasticsearch. Vous devez d'abord installer le package Elasticsearch-PHP :

composer require elasticsearch/elasticsearch

Ce qui suit est un exemple de code pour créer un index :

require 'vendor/autoload.php';

$client = ElasticsearchClientBuilder::create()->build();

$params = [
    'index' => 'my_index',
    'body' => [
        'settings' => [
            'number_of_shards' => 1,
            'number_of_replicas' => 0,
        ],
        'mappings' => [
            'my_type' => [
                'properties' => [
                    'title' => [
                        'type' => 'text'
                    ],
                    'content' => [
                        'type' => 'text'
                    ],
                    'post_date' => [
                        'type' => 'date',
                        'format' => 'yyyy-MM-dd HH:mm:ss'
                    ]
                ]
            ]
        ]
    ]
];

$response = $client->indices()->create($params);
#🎜 🎜#Dans le code ci-dessus, nous créons un index nommé "my_index" et définissons un type nommé "my_type". Nous avons défini trois champs sous le type "my_type" : titre, contenu et post_date.

    Ajouter des documents à l'index
Après avoir créé l'index, nous devons ajouter des documents à l'index qui seront renvoyés pertinents lors de la recherche du résultat .

Par exemple, nous ajoutons un article intitulé "PHP Development Practice" :

$params = [
    'index' => 'my_index',
    'type' => 'my_type',
    'id' => '1',
    'body' => [
        'title' => 'PHP开发实战',
        'content' => '本文介绍如何在PHP中使用Elasticsearch实现搜索功能。',
        'post_date' => date('Y-m-d H:i:s')
    ]
];

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

    Search Data
  1. #🎜🎜 #Search est l'une des fonctions les plus basiques et les plus couramment utilisées d'Elasticsearch. Elasticsearch prend en charge diverses méthodes de requête, notamment :

Requête de chaîne simple
  • Requête composée
  • Requête de plage
  • # 🎜🎜#Requête de valeur exacte
  • Requête d'expression régulière
  • Requête floue
  • Requête d'agrégation etc.
  • # 🎜🎜 #Ce qui suit est un exemple de recherche simple qui utilise des conditions de texte et de plage de dates :
  • $params = [
        'index' => 'my_index',
        'type' => 'my_type',
        'body' => [
            'query' => [
                'bool' => [
                    'must' => [
                        [
                            'match' => [
                                'title' => 'PHP'
                            ]
                        ],
                        [
                            'range' => [
                                'post_date' => [
                                    'gte' => '2021-01-01 00:00:00',
                                    'lte' => '2021-01-31 23:59:59'
                                ]
                            ]
                        ]
                    ]
                ]
            ]
        ]
    ];
    
    $response = $client->search($params);
  • Dans le code ci-dessus, nous utilisons les requêtes "match" et "range" pour rechercher des titres contenant l'article "PHP" , et les résultats seront publiés en janvier 2021.

Traitement des résultats

    Enfin, nous devons renvoyer les résultats de la recherche à PHP et les traiter pour qu'ils puissent enfin être présentés à l'utilisateur .
  1. $hits = $response['hits']['hits'];
    foreach ($hits as $hit) {
        echo $hit['_source']['title'] . "
    ";
        echo $hit['_source']['content'] . "
    ";
        echo $hit['_source']['post_date'] . "
    ";
    }
  2. Dans le code ci-dessus, nous parcourons chaque document dans l'ensemble de résultats de recherche et affichons le titre, le contenu et la date de sortie du document.

Summary

Cet article explique comment utiliser PHP combiné avec Elasticsearch pour implémenter des fonctions de recherche. En étudiant cet article, vous pourrez en apprendre davantage sur les opérations de base telles que la création d'index, l'ajout de documents, la recherche de données et le traitement des résultats. Bien entendu, Elasticsearch dispose également de nombreuses techniques d'utilisation, telles que la requête d'agrégation, la mise en évidence, le tri, etc. Ces techniques peuvent nous aider à mieux utiliser Elasticsearch pour implémenter les fonctions de recherche.

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