ES,全稱Elasticsearch,是一種基于Lucene的分布式、開源的搜索引擎。它提供了簡單易用的API,可以在非常短的時間內(nèi)完成復(fù)雜的搜索操作。在PHP開發(fā)中,我們經(jīng)常需要使用ES來實現(xiàn)數(shù)據(jù)存儲和搜索,本文將介紹如何在PHP中操作ES。
首先需要安裝Elasticsearch客戶端,可以通過composer來安裝。例如:
composer require elasticsearch/elasticsearch
接下來,我們需要創(chuàng)建一個Elasticsearch客戶端對象,連接ES服務(wù)器:
require 'vendor/autoload.php'; use Elasticsearch\ClientBuilder; $client = ClientBuilder::create()->setHosts(['localhost:9200'])->build();
以上代碼創(chuàng)建了一個連接到本地ES服務(wù)器的客戶端對象。
下面是如何創(chuàng)建一個索引(index)和類型(type):
$params = [ 'index' =>'my_index', 'body' =>[ 'settings' =>[ 'number_of_shards' =>3, 'number_of_replicas' =>2 ] ] ]; $response = $client->indices()->create($params);
上面的代碼創(chuàng)建一個名為"my_index"的索引,并且定義了它的一些設(shè)置,例如分片數(shù)和副本數(shù)。
接下來,讓我們看看如何向索引中添加文檔:
$params = [ 'index' =>'my_index', 'type' =>'my_type', 'id' =>'1', 'body' =>[ 'title' =>'My first blog post', 'content' =>'This is the content of my first blog post' ] ]; $response = $client->index($params);
上述代碼向剛創(chuàng)建的"my_index"索引中添加了一個名為"my_type"的類型。它的id為1,包含標(biāo)題和內(nèi)容兩個字段。
下面是如何通過ID獲取一個文檔:
$params = [ 'index' =>'my_index', 'type' =>'my_type', 'id' =>'1' ]; $response = $client->get($params);
上面的代碼通過ID獲取了在"my_index"索引中的文檔,類型為"my_type",id為1。
最后,我們來看看如何進(jìn)行搜索和過濾操作:
$params = [ 'index' =>'my_index', 'type' =>'my_type', 'body' =>[ 'query' =>[ 'bool' =>[ 'must' =>[ 'match' =>['title' =>'blog'] ], 'filter' =>[ 'range' =>[ 'date_published' =>['gte' =>'2019-01-01', 'lte' =>'2020-01-01'] ] ] ] ] ] ]; $response = $client->search($params);
上述代碼在"my_index"索引中的類型"my_type"中搜索標(biāo)題中包含"blog"的文檔,并且過濾日期在2019年1月1日至2020年1月1日之間的文檔。
以上介紹了ES在PHP中常見的一些操作,包括創(chuàng)建索引、添加文檔、獲取文檔和搜索過濾。開發(fā)人員可以根據(jù)實際需求自行調(diào)用ES API完成企業(yè)級搜索開發(fā)。