Maison >développement back-end >tutoriel php >Comment implémenter la recherche multi-conditions à l'aide de PHP et Elasticsearch

Comment implémenter la recherche multi-conditions à l'aide de PHP et Elasticsearch

WBOY
WBOYoriginal
2023-07-18 21:12:251203parcourir

Comment utiliser PHP et Elasticsearch pour implémenter la recherche multi-conditions

Introduction :
Dans le développement Web, la fonction de recherche fait partie intégrante. Afin de fournir des résultats de recherche plus précis et plus flexibles, nous devons généralement mettre en œuvre une recherche multi-conditions. Cet article explique comment utiliser PHP et Elasticsearch pour implémenter la recherche multi-conditions. Nous présenterons les concepts de base d'Elasticsearch et donnerons des exemples de code pour vous aider à comprendre et à mettre en pratique ce processus.

Première partie : Présentation d'Elasticsearch
Elasticsearch est un moteur de recherche et d'analyse distribué open source qui peut rapidement stocker, rechercher et analyser de grandes quantités de données. En utilisant Elasticsearch, nous pouvons facilement mettre en œuvre de puissantes fonctionnalités de recherche et fournir des résultats de recherche hautes performances.

Partie 2 : Indexation
Avant de rechercher, nous devons d'abord indexer les données. Un index est une collection de documents, chacun constitué d'un ensemble de champs. Dans cet exemple, nous utiliserons un index appelé « produits » pour stocker les informations sur les produits.

Le code PHP pour créer l'index ressemble à ceci :

require 'vendor/autoload.php';

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

$params = [
    'index' => 'products',
    'body' => [
        'settings' => [
            'number_of_shards' => 1,
            'number_of_replicas' => 0
        ],
        'mappings' => [
            'properties' => [
                'name' => [
                    'type' => 'text',
                    'analyzer' => 'ik_max_word',
                ],
                'price' => [
                    'type' => 'integer'
                ],
                'category' => [
                    'type' => 'keyword'
                ]
            ]
        ]
    ]
];

$response = $client->indices()->create($params);

Dans le code ci-dessus, nous avons utilisé la bibliothèque client PHP d'Elasticsearch. Tout d’abord, nous configurons une nouvelle instance client. Ensuite, nous définissons les paramètres et les informations de mappage pour l'index, et créons l'index en appelant la méthode indices()->create(). indices()->create()方法来创建索引。

第三部分:添加文档
在建立索引后,我们需要将实际的数据添加到Elasticsearch中。以下是一个添加产品文档的示例代码:

$params = [
    'index' => 'products',
    'body' => [
        'name' => 'iPhone 12',
        'price' => 9999,
        'category' => '手机'
    ]
];

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

在这段代码中,我们指定了索引名称和要添加的文档。我们只需将文档的字段和对应的值传递给index()方法即可。

第四部分:进行多条件搜索
一旦数据成功添加到Elasticsearch中,我们就可以开始进行多条件搜索。以下是一个使用PHP和Elasticsearch进行多条件搜索的示例代码:

$params = [
    'index' => 'products',
    'body' => [
        'query' => [
            'bool' => [
                'must' => [
                    ['match' => ['name' => 'iPhone']],
                    ['range' => ['price' => ['gte' => 5000]]],
                    ['term' => ['category' => '手机']]
                ]
            ]
        ]
    ]
];

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

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

在这个示例代码中,我们首先创建了一个查询结构,通过matchrangeterm来定义了多个查询条件。然后,我们通过search()方法将查询参数传递给Elasticsearch,并获取搜索结果。

最后,我们将搜索结果存储在$results

Troisième partie : Ajout de documents

Après l'indexation, nous devons ajouter les données réelles à Elasticsearch. Voici un exemple de code pour ajouter un document produit :
rrreee

Dans ce code, nous précisons le nom de l'index et le document à ajouter. Il suffit de transmettre les champs du document et les valeurs correspondantes à la méthode index(). 🎜🎜Partie 4 : Effectuer une recherche multicritère🎜Une fois les données ajoutées avec succès à Elasticsearch, nous pouvons commencer à effectuer une recherche multicritère. Voici un exemple de code pour la recherche multi-conditions à l'aide de PHP et Elasticsearch : 🎜rrreee🎜 Dans cet exemple de code, nous créons d'abord une structure de requête via match, range et term pour définir plusieurs conditions de requête. Ensuite, nous transmettons les paramètres de requête à Elasticsearch via la méthode search() et obtenons les résultats de la recherche. 🎜🎜Enfin, nous stockons les résultats de la recherche dans le tableau $results, qui peuvent être traités et affichés davantage si nécessaire. 🎜🎜Conclusion : 🎜En utilisant PHP et Elasticsearch, nous pouvons implémenter des fonctions de recherche multi-conditions pour fournir aux utilisateurs des résultats de recherche plus précis et plus flexibles. Dans cet article, nous avons présenté les concepts de base d'Elasticsearch et montré à travers des exemples de code comment indexer, ajouter des documents et effectuer des recherches multicritères. J'espère que cet article pourra vous fournir des informations et des conseils utiles, vous permettant de mieux comprendre et appliquer la technologie de recherche multicritère. 🎜

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