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

WorkermanのWebSocketクライアントは、非同期通信、高性能、スケーラビリティ、セキュリティなどの機能とのリアルタイム通信を強化し、既存のシステムと簡単に統合します。

この記事では、リアルタイムのコラボレーションツールを構築するために、高性能PHPサーバーであるWorkermanを使用して説明します。インストール、サーバーのセットアップ、リアルタイム機能の実装、既存のシステムとの統合をカバーし、Workermanのキーfを強調します

この記事では、非同期プログラミング、ネットワーク構成、リソース管理、データ転送の最小化、負荷分散、定期的な更新に焦点を当てた低遅延アプリケーションのWorkermanの最適化について説明します。

この記事では、WorkermanとMySQLを使用したリアルタイムデータ同期の実装、セットアップ、ベストプラクティス、データの一貫性の確保、一般的な課題への対処に焦点を当てています。

この記事では、Swaremanをサーバーレスアーキテクチャに統合し、スケーラビリティ、ステートレス性、コールドスタート、リソース管理、統合の複雑さに焦点を当てています。 Workermanは、高い並行性を通じてパフォーマンスを向上させ、Cold STAを減らします

この記事では、Workermanを使用して高性能のeコマースプラットフォームの構築について説明し、Websocketのサポートやスケーラビリティなどの機能に焦点を当て、リアルタイムの相互作用と効率を向上させます。

WorkermanのWebSocketサーバーは、一般的な脅威に対するスケーラビリティ、低レイテンシ、セキュリティ対策などの機能とのリアルタイム通信を強化します。

この記事では、高性能PHPサーバーであるWorkermanを使用して、リアルタイム分析ダッシュボードを構築することについて説明します。これは、React、Vue.JS、Angularなどのフレームワークとのインストール、サーバーのセットアップ、データ処理、フロントエンドの統合をカバーしています。キーfeatur


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

ドリームウィーバー CS6
ビジュアル Web 開発ツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。
