本文將介紹如何使用PHP操作ES(Elasticsearch)。ES是一個開源搜索引擎,可以用于全文搜索、日志分析、數(shù)據(jù)分析等場景。
首先,我們需要安裝PHP的Elasticsearch客戶端庫,如Elasticsearch-PHP。安裝方法可以通過Composer來完成。例如,在命令行中輸入以下命令:
composer require elasticsearch/elasticsearch接下來,我們需要連接到ES的服務(wù)器。在測試環(huán)境下,可以使用localhost作為主機(jī)名。在生產(chǎn)環(huán)境中,使用遠(yuǎn)程服務(wù)器的IP地址或域名。連接代碼示例如下:
$client = new Elasticsearch\Client([ 'hosts' =>['localhost:9200'] ]);連接成功后,我們可以開始建立索引(index)和文檔(document)。 例如,我們要創(chuàng)建一個名稱為“products”的索引,包含了三個文檔:{name: “iPhone X”, price: 799},{name: “Galaxy S9”, price: 699},{name: “Pixel 2 XL”, price: 849}。我們可以通過以下代碼來實現(xiàn):
$params = [ 'index' =>'products', 'type' =>'_doc', 'body' =>[ ['name' =>'iPhone X', 'price' =>799], ['name' =>'Galaxy S9', 'price' =>699], ['name' =>'Pixel 2 XL', 'price' =>849] ] ]; $response = $client->bulk($params);這里使用了bulk操作,一次性添加多個文檔。也可以使用index操作單個添加文檔。 接下來,我們可以執(zhí)行搜索操作來查找文檔。例如,我們要查找價格大于700美元的產(chǎn)品。我們可以使用以下代碼:
$params = [ 'index' =>'products', 'body' =>[ 'query' =>[ 'range' =>[ 'price' =>['gte' =>700] ] ], 'sort' =>[ ['price' =>['order' =>'desc']] ] ] ]; $response = $client->search($params);這里使用了range查詢,查找價格大于等于700美元的文檔。并且按照價格降序排序。我們可以通過遍歷$response['hits']['hits']來獲取搜索結(jié)果。 簡單介紹了ES的基本使用后,我們還可以使用ES的聚合功能來分析數(shù)據(jù)。例如,我們要統(tǒng)計每個價格區(qū)間內(nèi)的文檔數(shù)量。我們可以使用以下代碼:
$params = [ 'index' =>'products', 'body' =>[ 'aggs' =>[ 'price_ranges' =>[ 'range' =>[ 'field' =>'price', 'ranges' =>[ ['to' =>500], ['from' =>500, 'to' =>800], ['from' =>800] ] ] ] ] ] ]; $response = $client->search($params);這里使用了range聚合,將價格分為三個區(qū)間:小于500美元、500~800美元、大于等于800美元。并統(tǒng)計每個區(qū)間內(nèi)的文檔數(shù)量。 以上示例只是ES的一個簡單應(yīng)用。ES提供了更多的搜索、聚合功能,可以根據(jù)具體需求進(jìn)行使用。
下一篇es鏈接php