下面由Laravel教程欄目給大家介紹laravel使用es的正確姿勢(shì),希望對(duì)需要的朋友有所幫助!

Elasticsearch 簡(jiǎn)介
Elastic 的底層是開源庫(kù) Lucene。但是,你沒法直接用 Lucene,必須自己寫代碼去調(diào)用它的接口。Elastic 是 Lucene 的封裝,提供了 REST API 的操作接口,開箱即用。
ES 和 Mysql
ES 里的概念類比于 Mysql 如下圖所示:
倒排索引
在說(shuō)倒排索引之前我們先說(shuō)說(shuō)什么是正排索引。正排索引也稱為”前向索引”,它是創(chuàng)建倒排索引的基礎(chǔ)。
如上在查詢一個(gè) keyword 在哪些文檔里包含的時(shí)候,需對(duì)所有的文檔進(jìn)行掃描以確保沒有遺漏,這樣就使得檢索時(shí)間大大延長(zhǎng),檢索效率低下。這個(gè)時(shí)候我們就用到了倒排索引,首先將文檔分詞。
比如我們要查詢‘搜索引擎’這個(gè)關(guān)鍵詞在哪些文檔中出現(xiàn)過。首先我們通過倒排索引可以查詢到該關(guān)鍵詞出現(xiàn)的文檔位置是在1和3中;然后再通過正排索引查詢到文檔1和3的內(nèi)容并返回結(jié)果。
Laravel 使用 ES
安裝插件
basemkhirat/elasticsearch 是 Laravel 中使用 ES 的一個(gè)擴(kuò)展,使用起來(lái)非常方便:
1)安裝方法
$ composer require basemkhirat/elasticsearch
2)發(fā)布
$ php artisan vendor:publish –provider=”Basemkhirat\\Elasticsearch\\ElasticsearchServiceProvider”
配置
這樣我們就安裝好了,如下是我們的連接配置:
'connections' => [
'default' => [
'servers' => [
[
"host" => env("ELASTIC_HOST", "127.0.0.1"),
"port" => env("ELASTIC_PORT", 9200),
'user' => env('ELASTIC_USER', ''),
'pass' => env('ELASTIC_PASS', ''),
'scheme' => env('ELASTIC_SCHEME', 'http'),
]
],
'index' => env('ELASTIC_INDEX', 'my_index')
]],servers 里可以加入我們的集群配置。
使用方法
該插件的使用方法可借鑒 Laravel 的查詢構(gòu)造器,支持常用的如 where、whereIn、whereBetween、orderBy、first、get,也支持分頁(yè)方法paginate。
$documents = ES::connection(“default”)
->index(“my_index”)
->type(“my_type”)
->get(); # return a collection of results
設(shè)置字段權(quán)重:
ES::type(“my_type”)->search(“hello”, function($search){
$search->boost(2)->fields([“title” => 2, “content” => 1])
})->get();
我們也可以通過修改源碼擴(kuò)充自己需要用到的方法,也可以構(gòu)造原生的查詢語(yǔ)句:
$params['body'] = [
'aggs' => [
'all_created' => [
'terms' => [
'field' => 'element.raw',
'size' => $this->_mAggsPageSize ],
'aggs' => [
'sum_pv' => [
'sum' => ['field' => 'pv'],
],
],
],
],
];結(jié)語(yǔ)
ES 內(nèi)置分詞器對(duì)中分支持并不友好,比較推薦的是 IK分詞器,需要注意的是ik版本需要與ES的版本號(hào)保持一致。
當(dāng)前標(biāo)題:關(guān)于laravel使用es的正確姿勢(shì)
URL分享:http://chinadenli.net/article2/cghcic.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、網(wǎng)站排名、電子商務(wù)、動(dòng)態(tài)網(wǎng)站、Google、域名注冊(cè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)