站長資訊網
        最全最豐富的資訊網站

        關于laravel使用es的正確姿勢

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

        關于laravel使用es的正確姿勢

        Elasticsearch 簡介

        Elastic 的底層是開源庫 Lucene。但是,你沒法直接用 Lucene,必須自己寫代碼去調用它的接口。Elastic 是 Lucene 的封裝,提供了 REST API 的操作接口,開箱即用。

        ES 和 Mysql

        ES 里的概念類比于 Mysql 如下圖所示:
        關于laravel使用es的正確姿勢

        倒排索引

        在說倒排索引之前我們先說說什么是正排索引。正排索引也稱為”前向索引”,它是創建倒排索引的基礎。
        關于laravel使用es的正確姿勢
        如上在查詢一個 keyword 在哪些文檔里包含的時候,需對所有的文檔進行掃描以確保沒有遺漏,這樣就使得檢索時間大大延長,檢索效率低下。這個時候我們就用到了倒排索引,首先將文檔分詞。
        關于laravel使用es的正確姿勢
        比如我們要查詢‘搜索引擎’這個關鍵詞在哪些文檔中出現過。首先我們通過倒排索引可以查詢到該關鍵詞出現的文檔位置是在1和3中;然后再通過正排索引查詢到文檔1和3的內容并返回結果。

        Laravel 使用 ES

        安裝插件

        basemkhirat/elasticsearch 是 Laravel 中使用 ES 的一個擴展,使用起來非常方便:
        1)安裝方法

        $ composer require basemkhirat/elasticsearch

        2)發布

        $ php artisan vendor:publish –provider=”BasemkhiratElasticsearchElasticsearchServiceProvider”

        配置

        這樣我們就安裝好了,如下是我們的連接配置:

        '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 的查詢構造器,支持常用的如 wherewhereIn、whereBetween、orderBy、first、get,也支持分頁方法paginate。

        $documents = ES::connection(“default”)
        ->index(“my_index”)
        ->type(“my_type”)
        ->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的版本號保持一致。

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 狠狠色丁香婷婷综合精品视频| 久久久九九有精品国产| 国内精品久久久久久久97牛牛| 国产精品视频不卡| laowang在线精品视频| 久久精品亚洲一区二区三区浴池 | 伊人久久精品无码二区麻豆| 国产精品毛片无码| 久久久91精品国产一区二区三区| 国产99视频精品免视看7| 老司机亚洲精品影院| 中文字幕无码精品亚洲资源网久久 | 久久精品无码一区二区app| 99精品国产福利在线观看| 精品视频一区二区三区在线观看| 国内精品久久久久久久97牛牛| 无码人妻精品一区二区三区久久 | 亚洲欧洲国产精品你懂的| 国产成人精品视频一区二区不卡| 亚洲精品无码永久在线观看你懂的 | 亚洲欧洲国产精品香蕉网| 日本精品久久久久影院日本| 国产一区二区三精品久久久无广告| 亚洲国产综合91精品麻豆| 欧美精品天天操| 午夜精品久视频在线观看| 久久亚洲国产欧洲精品一| 黑人精品videos亚洲人| 精品久久久久久| 亚洲国产精品久久66| 777欧美午夜精品影院| 成人午夜精品亚洲日韩| 国产精品 视频一区 二区三区| 国产精品 日韩欧美| 精品久久久久久99人妻| 久久久不卡国产精品一区二区| 精品人妻伦一二三区久久| 欧美激情精品久久久久久久| 男女男精品网站免费观看| 亚洲精品无码AV中文字幕电影网站 | 精品国产一区AV天美传媒|