PHP と Elasticsearch によって実装された高性能のデータ フィルタリングとフィルタリング手法
インターネットの急速な発展に伴い、ビッグデータの時代が到来し、大量のデータを処理することが多くのアプリケーションにとって重要な課題となっています。 。 Web開発では、ユーザーのニーズを満たすために大量のデータをフィルタリングする必要があることがよくあります。従来のデータベース クエリには大規模なデータを処理する際のパフォーマンスの問題があり、リアルタイムの分散検索および分析エンジンとしての Elasticsearch は、ビッグ データを処理するための理想的な選択肢となっています。この記事では、PHP と Elasticsearch を使用して高パフォーマンスのデータ フィルタリングとフィルタリング方法を実装する方法をコード例を添付して紹介します。
1. Elasticsearch と PHP Elasticsearch ライブラリをインストールする
始める前に、Elasticsearch と PHP Elasticsearch ライブラリをインストールする必要があります。まず、Elasticsearch 公式 Web サイト (https://www.elastic.co/products/elasticsearch) にアクセスして、Elasticsearch の最新バージョンをダウンロードしてインストールします。次に、Composer を使用して PHP Elasticsearch ライブラリをインストールします。プロジェクトのルート ディレクトリで次のコマンドを実行できます:
composer require elasticsearch/elasticsearch
2. Elasticsearch クラスターに接続します
フィルターとフィルターを開始する前にデータを取得するには、Elasticsearch クラスターへの接続を確立する必要があります。まず、elasticsearch.php
という名前の PHP ファイルを作成し、そのファイルに次のコードを追加します。
<?php require 'vendor/autoload.php'; $client = ElasticsearchClientBuilder::create()->build();
上記のコードは、PHP Elasticsearch によって提供される ElasticsearchClientBuilder
クラスを使用します。 library Elasticsearch クラスターへの接続を確立します。 $client
変数を使用して、インデックス付けや検索などのさまざまな操作を実行できます。
3. インデックスを作成してデータを挿入
データをフィルター処理する前に、まずインデックスを作成し、テスト データを挿入する必要があります。処理したいデータが製品のリストであり、各製品には名前、価格、在庫が含まれているとします。以下は、インデックスを作成してデータを挿入するサンプル コードです。
<?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
という名前のインデックスを作成し、テスト データを挿入します。各製品には、名前、価格、在庫の 3 つのフィールドが含まれます。これらのフィールドに基づいてデータをフィルタリングできます。
4. データ フィルタリングとフィルタリングの実装
次の基本的なデータ フィルタリングとフィルタリング操作を実装するとします: 製品価格に基づく範囲クエリ、製品名に基づく検索、製品に基づく検索フィルタするインベントリの名前。対応するコード例は次のとおりです。
<?php require 'elasticsearch.php'; $params = [ 'index' => 'products', 'body' => [ 'query' => [ 'range' => [ 'price' => [ 'gte' => 800, 'lte' => 1000 ] ] ] ] ]; $response = $client->search($params);
上記のコードは、価格
に基づいて範囲クエリを実行します。フィールドに入力し、800 ~ 1000 のアイテムの価格リストを返します。
<?php require 'elasticsearch.php'; $params = [ 'index' => 'products', 'body' => [ 'query' => [ 'match' => [ 'name' => 'iPhone' ] ] ] ]; $response = $client->search($params);
上記のコードは、name
フィールドに基づいて検索し、返される名前にはキーワード ## が含まれます#iPhone の商品一覧です。
<?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']; // 处理搜索结果... }上記のコードは、検索結果の各ヒットを反復処理し、
$source を通じてヒットのソース データにアクセスします。変数。検索結果をWebページに表示したり、さらに処理したりするなど、独自のニーズに応じて処理できます。
以上がPHP と Elasticsearch で実装された高性能データ フィルタリングとフィルタリング メソッドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。