首頁  >  文章  >  php框架  >  關於laravel使用es的正確姿勢

關於laravel使用es的正確姿勢

藏色散人
藏色散人轉載
2020-09-19 09:13:045759瀏覽

以下由Laravel教學專欄為大家介紹laravel使用es的正確姿勢,希望對需要的朋友有幫助!

關於laravel使用es的正確姿勢

Elasticsearch

#但是,你沒辦法直接用 Lucene,必須自己寫程式碼去呼叫它的介面。 Elastic 是 Lucene 的封裝,提供了 REST API 的操作接口,開箱即用。

課程推薦→:

《elasticsearch全文搜尋實戰》

(實戰影片)來自課程

《千萬級資料並發解決方案(理論實戰)》

ES 和Mysql


laravel 使用 es 的正确姿势ES 裡的概念類比於Mysql 如下圖所示:

#倒排索引


laravel 使用 es 的正确姿势#在說倒排索引之前我們先說說什麼是正排索引。正排索引也稱為”前向索引”,它是創建倒排索引的基礎。

laravel 使用 es 的正确姿势如上在查詢一個 keyword 在哪些文件包含的時候,需對所有的文件進行掃描以確保沒有遺漏,這樣就使得檢索時間大大延長,檢索效率低下。這時候我們就用到了倒排索引,先將文檔分詞。

例如我們要查詢『搜尋引擎』這個關鍵字在哪些文件中出現過。首先我們透過倒排索引可以查詢到該關鍵字出現的文檔位置是在1和3中;然後再透過正排索引查詢到文檔1和3的內容並傳回結果。

Laravel 使用ES

#安裝外掛程式

## basemkhirat/elasticsearch
是Laravel 中使用ES 的擴展,使用起來非常方便:

1)安裝方法

##$ composer require basemkhirat/elasticsearch

2)發佈

$ 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 的查詢建構器,支援常用的如
where


whereIn

whereBetween

orderBy

firstget,也支援分頁方法paginate

。 #########$documents = ES::connection(「default」)###              ->index(「my_index」)###      gt ;get();    # return a collection of results#########設定欄位權重:#########ES::type(“my_type”)->search(“hello” , function($search){###    $search->boost(2)->fields([“title” => 2, “content” => 1])###})-> get();#########我們也可以透過修改原始碼擴充自己需要用到的方法,也可以建構原生的查詢語句:###
$params['body'] = [
            'aggs' => [
                'all_created' => [
                    'terms' => [
                        'field' => 'element.raw',
                        'size'  => $this->_mAggsPageSize                    ],

                    'aggs' => [

                        'sum_pv' => [
                            'sum' => ['field' => 'pv'],
                        ],
                    ],
                ],
            ],
        ];
########### #結語######

ES 內建分詞器對中分支援並不友好,比較推薦的是 IK分詞器,需要注意的是ik版本需要與ES的版本號保持一致                                            

以上是關於laravel使用es的正確姿勢的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:learnku.com。如有侵權,請聯絡admin@php.cn刪除