ホームページ  >  記事  >  バックエンド開発  >  PHP と Elasticsearch で実装された高性能データ フィルタリングとフィルタリング メソッド

PHP と Elasticsearch で実装された高性能データ フィルタリングとフィルタリング メソッド

WBOY
WBOYオリジナル
2023-07-07 11:05:12826ブラウズ

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. データ フィルタリングとフィルタリングの実装

次の基本的なデータ フィルタリングとフィルタリング操作を実装するとします: 製品価格に基づく範囲クエリ、製品名に基づく検索、製品に基づく検索フィルタするインベントリの名前。対応するコード例は次のとおりです。

  1. 製品価格に基づく範囲クエリ
<?php
require 'elasticsearch.php';

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

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

上記のコードは、価格に基づいて範囲クエリを実行します。フィールドに入力し、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 の製品のリストを返します。

5. 検索結果の処理

上記の各検索操作では、

$response 変数を通じて検索結果を取得できます。検索結果を処理する方法のサンプル コードを次に示します。

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

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

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

上記のコードは、検索結果の各ヒットを反復処理し、

$source を通じてヒットのソース データにアクセスします。変数。検索結果をWebページに表示したり、さらに処理したりするなど、独自のニーズに応じて処理できます。

6. 概要

この記事では、PHP と Elasticsearch を使用して高性能のデータ フィルタリングとフィルタリング メソッドを実装する方法を紹介します。 Elasticsearchへの接続を確立し、Elasticsearchの効率的な検索および分析機能を活用することで、大量のデータを簡単に処理し、ニーズを満たすデータを迅速にフィルタリングして取り出すことができます。この記事がビッグデータを扱う必要がある Web 開発者に役立つことを願っています。

以上がPHP と Elasticsearch で実装された高性能データ フィルタリングとフィルタリング メソッドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。