搜尋
首頁php框架Workerman如何在Workerman中使用ElasticSearch進行資料儲存與搜尋

如何在Workerman中使用ElasticSearch進行資料儲存與搜尋

Nov 07, 2023 pm 01:40 PM
workermanelasticsearch搜尋資料儲存

如何在Workerman中使用ElasticSearch進行資料儲存與搜尋

在Web開發中,資料儲存與搜尋是非常重要的一部分。 ElasticSearch是一個開源的分散式搜尋引擎,被廣泛應用於資料搜尋和分析。它能夠處理大量數據並提供高效的搜尋和聚合功能。 Workerman是高效能的PHP socket框架,適用於開發即時通訊、線上遊戲和高並發Web服務等應用。在本文中,我們將介紹如何在Workerman中使用ElasticSearch進行資料儲存與搜尋。

  1. ElasticSearch安裝與設定

在開始之前,我們需要先安裝並設定ElasticSearch。可以在ElasticSearch的官方網站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回呼函數來定義了Worker進程啟動時的行為。

  1. ElasticSearch中資料的增刪查改

在Workerman中使用ElasticSearch進行資料儲存與搜索,我們需要掌握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中,資料的查詢分為精確查詢和模糊查詢兩種方式。其中,精確查詢是指透過指定欄位和值來尋找數據,而模糊查詢是指透過模糊匹配來尋找數據。可以使用以下程式碼來完成資料的查詢:

// 精确查询
$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中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
Workerman內置WebSocket客戶端的關鍵功能是什麼?Workerman內置WebSocket客戶端的關鍵功能是什麼?Mar 18, 2025 pm 04:20 PM

Workerman的Websocket客戶端可以通過異步通信,高性能,可伸縮性和安全性等功能增強實時通信,並可以輕鬆地與現有系統集成。

如何使用工作人員來構建實時協作工具?如何使用工作人員來構建實時協作工具?Mar 18, 2025 pm 04:15 PM

本文討論了使用高性能PHP服務器Workerman來構建實時協作工具。它涵蓋安裝,服務器設置,實時功能實現以及與現有系統集成,強調Workerman的密鑰F

為低延遲應用優化工作人員的最佳方法是什麼?為低延遲應用優化工作人員的最佳方法是什麼?Mar 18, 2025 pm 04:14 PM

本文討論了針對低延遲應用程序的優化工作人員,重點介紹異步編程,網絡配置,資源管理,數據傳輸最小化,負載平衡和常規更新。

如何與Workerman和MySQL實施實時數據同步?如何與Workerman和MySQL實施實時數據同步?Mar 18, 2025 pm 04:13 PM

本文討論了使用Workerman和MySQL實施實時數據同步的,重點是設置,最佳實踐,確保數據一致性以及解決共同挑戰。

在無服務器體系結構中使用Workerman的主要考慮因素是什麼?在無服務器體系結構中使用Workerman的主要考慮因素是什麼?Mar 18, 2025 pm 04:12 PM

本文討論了將工作人員集成到無服務器體系結構中,專注於可擴展性,無狀態,冷啟動,資源管理和集成複雜性。 Workerman通過高並發,降低冷STA來提高性能

如何使用Workerman建立高性能的電子商務平台?如何使用Workerman建立高性能的電子商務平台?Mar 18, 2025 pm 04:11 PM

文章討論了使用Workerman建立高性能的電子商務平台,重點關注其功能,例如Websocket支持和可擴展性,以提高實時交互和效率。

Workerman的Websocket服務器的高級功能是什麼?Workerman的Websocket服務器的高級功能是什麼?Mar 18, 2025 pm 04:08 PM

Workerman的Websocket服務器可以通過可擴展性,低延遲和針對常見威脅的安全措施等功能增強實時通信。

如何使用工作人員來構建實時分析儀表板?如何使用工作人員來構建實時分析儀表板?Mar 18, 2025 pm 04:07 PM

本文討論了使用高性能PHP服務器Workerman來構建實時分析儀表板。它涵蓋了與React,vue.js和Angular等框架的安裝,服務器設置,數據處理以及前端集成。關鍵功能

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),