Maison  >  Article  >  développement back-end  >  Filtrage de données haute performance et méthodes de filtrage implémentées dans PHP et Elasticsearch

Filtrage de données haute performance et méthodes de filtrage implémentées dans PHP et Elasticsearch

WBOY
WBOYoriginal
2023-07-07 11:05:12868parcourir

Filtrage de données haute performance et méthodes de filtrage mises en œuvre par PHP et Elasticsearch

Avec le développement rapide d'Internet, l'ère du big data est arrivée et le traitement de données massives est devenu un défi important pour de nombreuses applications. Dans le développement Web, nous devons souvent filtrer et filtrer de grandes quantités de données pour répondre aux besoins des utilisateurs. Les requêtes de bases de données traditionnelles présentent des problèmes de performances lors du traitement de données à grande échelle, et Elasticsearch, en tant que moteur de recherche et d'analyse distribué en temps réel, est devenu un choix idéal pour traiter le Big Data. Cet article expliquera comment utiliser PHP et Elasticsearch pour implémenter des méthodes de filtrage et de filtrage de données hautes performances, et joindra des exemples de code.

1. Installer Elasticsearch et la bibliothèque PHP Elasticsearch

Avant de commencer, nous devons installer Elasticsearch et la bibliothèque PHP Elasticsearch. Tout d'abord, visitez le site officiel d'Elasticsearch (https://www.elastic.co/products/elasticsearch) pour télécharger et installer la dernière version d'Elasticsearch. Ensuite, nous utilisons Composer pour installer la bibliothèque PHP Elasticsearch. Vous pouvez exécuter la commande suivante dans le répertoire racine du projet :

composer require elasticsearch/elasticsearch

2. Connectez-vous au cluster Elasticsearch

Avant de commencer à filtrer et filtrer les données, nous devons établir une connexion. au cluster Elasticsearch. Tout d'abord, créez un fichier PHP, nommé elasticsearch.php, et ajoutez le code suivant dans le fichier : elasticsearch.php,并在文件中添加以下代码:

<?php
require 'vendor/autoload.php';

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

以上代码使用PHP Elasticsearch库提供的ElasticsearchClientBuilder类建立与Elasticsearch集群的连接。我们可以使用$client变量来执行各种操作,如索引、搜索等。

三、创建索引和插入数据

在进行数据过滤和筛选之前,我们首先需要创建一个索引并插入一些测试数据。假设我们要处理的数据是商品列表,每个商品包含名称、价格和库存。以下是创建索引和插入数据的示例代码:

<?php
require 'elasticsearch.php';

$params = [
    'index' => 'products',
    'body' => [
        [
            'name' => 'iPhone X',
            'price' => 999,
            'stock' => 10
        ],
        [
            'name' => 'Samsung Galaxy S10',
            'price' => 899,
            'stock' => 5
        ],
        [
            'name' => 'Google Pixel 3',
            'price' => 799,
            'stock' => 3
        ],
        // 更多商品...
    ]
];

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

以上代码将创建一个名为products的索引,并插入了一些测试数据。每个商品都包含名称、价格和库存三个字段。我们可以根据这些字段来进行数据的过滤和筛选。

四、实现数据的过滤和筛选

假设我们要实现以下几种基本的数据过滤和筛选操作:根据商品价格进行范围查询、根据商品名称进行搜索、根据商品库存进行筛选。以下是对应的代码示例:

  1. 根据商品价格进行范围查询
<?php
require 'elasticsearch.php';

$params = [
    'index' => 'products',
    'body' => [
        'query' => [
            'range' => [
                'price' => [
                    'gte' => 800,
                    'lte' => 1000
                ]
            ]
        ]
    ]
];

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

以上代码将根据price字段进行范围查询,返回价格在800到1000之间的商品列表。

  1. 根据商品名称进行搜索
<?php
require 'elasticsearch.php';

$params = [
    'index' => 'products',
    'body' => [
        'query' => [
            'match' => [
                'name' => 'iPhone'
            ]
        ]
    ]
];

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

以上代码将根据name字段进行搜索,返回名称包含关键词iPhone的商品列表。

  1. 根据商品库存进行筛选
<?php
require 'elasticsearch.php';

$params = [
    'index' => 'products',
    'body' => [
        'query' => [
            'bool' => [
                'filter' => [
                    'term' => [
                        'stock' => 0
                    ]
                ]
            ]
        ]
    ]
];

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

以上代码将根据stock字段进行筛选,返回库存为0的商品列表。

五、处理搜索结果

对于以上每个搜索操作,我们都可以通过$response变量获取搜索结果。以下是如何处理搜索结果的示例代码:

<?php
// ...
$response = $client->search($params);

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

foreach ($hits as $hit) {
    $source = $hit['_source'];
    // 处理搜索结果...
}

以上代码将遍历搜索结果的每个命中(hit),并通过$sourcerrreee

Le code ci-dessus utilise la classe ElasticsearchClientBuilder fournie par PHP Elasticsearch. bibliothèque à construire et connexion au cluster Elasticsearch. Nous pouvons utiliser la variable $client pour effectuer diverses opérations telles que l'indexation, la recherche, etc.

3. Créer un index et insérer des données

Avant de filtrer et de filtrer les données, nous devons d'abord créer un index et insérer des données de test. Supposons que les données que nous souhaitons traiter soient une liste de produits, chaque produit contient un nom, un prix et un inventaire. Voici un exemple de code pour créer un index et insérer des données : 🎜rrreee🎜Le code ci-dessus créera un index nommé products et insérera des données de test. Chaque produit contient trois champs : nom, prix et inventaire. Nous pouvons filtrer et filtrer les données en fonction de ces champs. 🎜🎜4. Implémenter le filtrage et le filtrage des données🎜🎜Supposons que nous souhaitions mettre en œuvre les opérations de filtrage et de filtrage des données de base suivantes : requête de plage basée sur le prix du produit, recherche basée sur le nom du produit et filtre basé sur l'inventaire du produit. Voici l'exemple de code correspondant : 🎜
  1. Requête de plage basée sur le prix du produit
rrreee🎜Le code ci-dessus effectuera une requête de plage basée sur le champ prix , et le prix retourné est dans la liste d'articles entre 800 et 1000. 🎜
  1. Recherche basée sur le nom du produit
rrreee🎜Le code ci-dessus recherchera en fonction du champ nom et le nom renvoyé contient la liste de produits du mot-clé iPhone. 🎜
  1. Filtre basé sur l'inventaire des produits
rrreee🎜Le code ci-dessus filtrera en fonction du champ stock et renverra une liste de produits avec 0 inventaire. 🎜🎜5. Traitement des résultats de recherche🎜🎜Pour chacune des opérations de recherche ci-dessus, nous pouvons obtenir les résultats de la recherche via la variable $response. Voici un exemple de code expliquant comment traiter les résultats de recherche : 🎜rrreee🎜Le code ci-dessus parcourra chaque accès aux résultats de recherche et accédera aux données source de l'accès via la variable $source. Nous pouvons traiter les résultats de la recherche selon nos propres besoins, comme par exemple les afficher sur des pages Web, les traiter ultérieurement, etc. 🎜🎜6. Résumé🎜🎜Cet article explique comment utiliser PHP et Elasticsearch pour implémenter des méthodes de filtrage et de filtrage de données hautes performances. En établissant une connexion à Elasticsearch et en tirant parti des capacités efficaces de recherche et d'analyse d'Elasticsearch, nous pouvons facilement traiter de grandes quantités de données et filtrer et filtrer rapidement les données qui répondent à nos besoins. J'espère que cet article sera utile aux développeurs Web qui doivent gérer le Big Data. 🎜

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