ホームページ > 記事 > PHPフレームワーク > Workerman でのデータ ストレージと検索に ElasticSearch を使用する方法
Web 開発では、データの保存と検索は非常に重要な部分です。 ElasticSearch は、データの検索と分析で広く使用されているオープンソースの分散検索エンジンです。大量のデータを処理でき、効率的な検索および集計機能を提供します。 Workerman は、リアルタイム通信、オンライン ゲーム、同時実行性の高い Web サービスなどのアプリケーションの開発に適した高性能 PHP ソケット フレームワークです。この記事では、Workerman でのデータ保存と検索に ElasticSearch を使用する方法を紹介します。
始める前に、ElasticSearch をインストールして構成する必要があります。 ElasticSearch の公式 Web サイト https://www.elastic.co/downloads/elasticsearch から最新のインストール パッケージをダウンロードし、オペレーティング システムの種類に応じてインストールできます。インストールが完了したら、次のコマンドを使用して ElasticSearch を開始できます:
$ cd elasticsearch/bin $ ./elasticsearch
同時に、リスニング ポートやクラスター名の設定など、config/elasticsearch.yml ファイルで ElasticSearch を構成することもできます。 、データストレージパス。
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 コールバック関数を通じてワーカー プロセスが開始されるときの動作も定義します。
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);
上記の操作を通じて、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 からデータを取得し、結果をクライアントに送信します。
この記事では、Workerman でのデータ ストレージと検索に ElasticSearch を使用する方法を紹介します。 ElasticSearch でのデータの追加、削除、クエリ、および変更操作を習得することで、Web アプリケーションにデータを迅速に保存および検索できるようになります。同時に、上記の操作をよりよく理解し、適用するために、Workerman に単純な ElasticSearch アプリケーションも実装しました。
以上がWorkerman でのデータ ストレージと検索に ElasticSearch を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。