ホームページ  >  記事  >  PHPフレームワーク  >  Workerman でのデータ ストレージと検索に ElasticSearch を使用する方法

Workerman でのデータ ストレージと検索に ElasticSearch を使用する方法

王林
王林オリジナル
2023-11-07 13:40:50743ブラウズ

Workerman でのデータ ストレージと検索に ElasticSearch を使用する方法

Web 開発では、データの保存と検索は非常に重要な部分です。 ElasticSearch は、データの検索と分析で広く使用されているオープンソースの分散検索エンジンです。大量のデータを処理でき、効率的な検索および集計機能を提供します。 Workerman は、リアルタイム通信、オンライン ゲーム、同時実行性の高い Web サービスなどのアプリケーションの開発に適した高性能 PHP ソケット フレームワークです。この記事では、Workerman でのデータ保存と検索に ElasticSearch を使用する方法を紹介します。

  1. ElasticSearch のインストールと構成

始める前に、ElasticSearch をインストールして構成する必要があります。 ElasticSearch の公式 Web サイト https://www.elastic.co/downloads/elasticsearch から最新のインストール パッケージをダウンロードし、オペレーティング システムの種類に応じてインストールできます。インストールが完了したら、次のコマンドを使用して ElasticSearch を開始できます:

$ cd elasticsearch/bin
$ ./elasticsearch

同時に、リスニング ポートやクラスター名の設定など、config/elasticsearch.yml ファイルで ElasticSearch を構成することもできます。 、データストレージパス。

  1. Workerman のインストールと構成

Workerman を使用する前に、まずインストールして構成する必要があります。 Workerman は、ターミナルに次のコマンドを入力することでインストールできます:

$ composer require workerman/workerman

インストールが完了したら、PHP スクリプト ファイルを作成して Workerman の Autoloader クラスを導入し、Workerman を起動する次のコードを追加する必要があります。 :

    require_once __DIR__ . '/vendor/autoload.php';
    use WorkermanWorker;

    $worker = new Worker();
    $worker->count = 4;
    $worker->onWorkerStart = function($worker){
      // do something
    };

    Worker::runAll();

上記のコードでは、Worker オブジェクトを作成し、プロセス数を 4 に設定しました。同時に、onWorkerStart コールバック関数を通じてワーカー プロセスが開始されるときの動作も定義します。

  1. ElasticSearch でのデータの追加、削除、確認、変更

ElasticSearch をデータの保存と Workerman での検索に使用する場合、追加、削除、およびElasticSearch でのデータの確認と変更、および特定の操作 以下に示すように:

a. データの作成

ElasticSearch では、データの作成は、指定されたインデックスへの HTTP PUT リクエストを通じて行われます。次のコードを使用してデータを作成できます:

curl -XPUT http://localhost:9200/{index}/{type}/{id} -d '{
  "title":"ElasticSearch tutorial",
  "tags":["search","elasticsearch"],
  "body":"ElasticSearch is a powerful search engine."
}'

もちろん、PHP コードを使用してデータの作成を完了することもできます:

$client = ElasticsearchClientBuilder::create()->build();
$params = [
    'index' => 'my_index',
    'type' => 'my_type',
    'id' => 'my_id',
    'body' => [
        'title' => 'ElasticSearch tutorial',
        'tags' => ['search', 'elasticsearch'],
        'body' => 'ElasticSearch is a powerful search engine.'
    ]
];
$response = $client->index($params);

b. データ クエリ

ElasticSearch では、データクエリを精密クエリとファジークエリの 2 つの方法に分けます。このうち、精密クエリとはフィールドと値を指定してデータを検索することを指し、ファジークエリとはファジーマッチングによってデータを検索することを指します。次のコードを使用してデータ クエリを完了できます:

// 精确查询
$client = ElasticsearchClientBuilder::create()->build();
$params = [
    'index' => 'my_index',
    'type' => 'my_type',
    'body' => [
        'query' => [
            'match' => [
                'title' => 'ElasticSearch tutorial'
            ]
        ]
    ]
];
$response = $client->search($params);

// 模糊查询
$client = ElasticsearchClientBuilder::create()->build();
$params = [
    'index' => 'my_index',
    'type' => 'my_type',
    'body' => [
        'query' => [
            'wildcard' => [
                'title' => '*search*'
            ]
        ]
    ]
];
$response = $client->search($params);

c. データ更新

ElasticSearch では、データ更新操作は、指定されたインデックスとドキュメント タイプの HTTP POST リクエストを通じて完了します。 . 、次のコードを使用してデータを更新できます:

curl -XPOST http://localhost:9200/{index}/{type}/{id}/_update -d '{
  "doc":{
    "title":"New ElasticSearch tutorial"
  }
}'

もちろん、PHP コードを使用してデータ更新を完了することもできます:

$client = ElasticsearchClientBuilder::create()->build();
$params = [
    'index' => 'my_index',
    'type' => 'my_type',
    'id' => 'my_id',
    'body' => [
        'doc' => [
            'title' => 'New ElasticSearch tutorial'
        ]
    ]
];
$response = $client->update($params);

d. データの削除

ElasticSearch では、データ削除操作は、指定されたインデックスとドキュメント タイプに対する HTTP DELETE リクエストを通じて完了します。次のコードを使用してデータを削除できます:

curl -XDELETE http://localhost:9200/{index}/{type}/{id}

もちろん、PHP を使用することもできます。データの削除を完了するためのコード:

$client = ElasticsearchClientBuilder::create()->build();
$params = [
    'index' => 'my_index',
    'type' => 'my_type',
    'id' => 'my_id'
];
$response = $client->delete($params);
  1. Workerman での ElasticSearch の例

上記の操作を通じて、ElasticSearch でのデータの保存と検索の基本的な操作をマスターしました。次に、Workerman でのデータ ストレージと検索に ElasticSearch を使用する例を実装します。具体的なコードは次のとおりです:

require_once __DIR__ . '/vendor/autoload.php';
use WorkermanWorker;
use ElasticsearchClientBuilder;

// 创建一个Worker对象
$worker = new Worker();
$worker->count = 4;

// 启动一个ElasticSearch客户端
$client = ClientBuilder::create()->build();

// 处理连接请求
$worker->onConnect = function($connection) {
    echo "New connection from " . $connection->getRemoteIp() . PHP_EOL;
};

// 处理数据请求
$worker->onMessage = function($connection, $data) use($client) {
    $params = [
        'index' => 'my_index',
        'type' => 'my_type',
        'body' => [
            'query' => [
                'wildcard' => [
                    'title' => '*' . $data . '*'
                ]
            ]
        ]
    ];

    // 从ElasticSearch检索数据
    $response = $client->search($params);

    // 处理检索结果
    $hits = $response['hits']['hits'];
    if(count($hits) > 0) {
        $result = 'Results:' . PHP_EOL;
        foreach($hits as $hit) {
            $result .= $hit['_source']['title'] . PHP_EOL;
        }
    } else {
        $result = 'No results found.' . PHP_EOL;
    }

    // 发送结果给客户端
    $connection->send($result);
};

Worker::runAll();

上記のコードでは、まず ElasticSearch クライアントを起動し、処理する Worker オブジェクトを作成します接続とデータのリクエスト。クライアントが接続してデータリクエストを受信すると、ElasticSearch からデータを取得し、結果をクライアントに送信します。

  1. 概要

この記事では、Workerman でのデータ ストレージと検索に ElasticSearch を使用する方法を紹介します。 ElasticSearch でのデータの追加、削除、クエリ、および変更操作を習得することで、Web アプリケーションにデータを迅速に保存および検索できるようになります。同時に、上記の操作をよりよく理解し、適用するために、Workerman に単純な ElasticSearch アプリケーションも実装しました。

以上がWorkerman でのデータ ストレージと検索に ElasticSearch を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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