Laravel 之搜尋引擎elasticsearch擴充套件Scout
部落格地址 : http://blog.mambaxin.com
簡介
Laravel Scout 是針對Eloquent 模型開發的一個簡單的,基於驅動的全文檢索系統。Scout 使用模型觀察者時會自動保持你的檢索索引與你的 Eloquent 記錄同步。
目前,Scout 帶著一個Algolia驅動;然而,擴充套件 Scout 並不難,你可以通過自定義驅動來自由的擴充套件 Scout。接下來我們就自定義搜尋引擎elasticsearch來擴充套件Scount。
ElasticSearch是一個基於Lucene的搜尋伺服器。它提供了一個分散式多使用者能力的全文搜尋引擎,基於RESTful web介面。Elasticsearch是用Java開發的,並作為Apache許可條款下的開放原始碼釋出,是當前流行的企業級搜尋引擎。
下載並安裝elasticsearch
(1)使用elasticsearch的前提是你的主機必須安裝了java的JDK,而且版本必須是1.8以上。安裝JDK,並設定JAVA_HOME環境變數。
(2)解壓安裝包,使用cmd命令進入到\bin,首先我們可以使用命令elasticsearch-plugin list 檢視外掛,我們可以看到會列出一串的外掛,但是我們只需要其中analysis-ik外掛,如果你的主機不夠強大,建議可以刪除其他不必要的外掛,因為會消耗主機的大部分資源,直接刪除\plugins中除了analysis-ik的其他外掛。
(3)重新cmd鍵入elasticsearch-plugin list 檢視外掛
(4)啟動,cmd鍵入elasticsearch -d,在瀏覽器地址了中輸入127.0.0.1:9200,我們可以看到如下圖:
安裝Scout
(1)首先,使用 composer 包管理器來安裝 Scout,如果沒有安裝 composer 包管理器,要先安裝;接著進入laravel專案的根目錄使用composer 命令安裝
composer require laravel/scout
(2)接下來,你需要將 ScoutServiceProvider 新增到你的 config/app.php 配置檔案的 providers 陣列中:
Laravel\Scout\ScoutServiceProvider::class,
(3)註冊好 Scout 的服務提供者之後,你可以使用 vendor:publish Artisan 命令生成 Scout 的配置檔案。這個命令會在你的 config 目錄下生成 scout.php 配置檔案:
php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"
(4)使用 composer安裝scout的es驅動:
composer require tamayo/laravel-scout-elastic
(5)安裝完驅動之後,修改config\scout.php配合檔案,將驅動修改為elasticsearch
'driver' => env('SCOUT_DRIVER', 'elasticsearch'),
並在下方新增驅動:
'elasticsearch' => [
//laravel54是專案名,可以自定義
'index' => env('ELASTICSEARCH_INDEX', 'laravel54'),
'hosts' => [
env('ELASTICSEARCH_HOST', 'http://127.0.0.1:9200'),
],
],
建立command命令
(1)使用php artisan建立command命令
php artisan make:command ESInit
(2)執行完命令後會建立app\Console\Command\ESInit.php檔案,修改ESInit.php
//使用什麼命令啟動指令碼
protected $signature = 'es:init';
//描述
protected $description = 'init laravel es for post';
(3)在app\Console\Kernel.php中掛載
protected $commands = [
\App\Console\Commands\ESInit::class
];
完成之後使用php artisan命令檢視命令是否掛載成功
安裝guzzlehttp/guzzle 擴充套件
composer require guzzlehttp/guzzle
配置
(1)修改app\Console\Command\ESInit.php
public function handle()
{
//建立template
$client=new Client();
$url=config('scout.elasticsearch.hosts')[0]. '/_template/tmp';
//$client->delete($url);
$param = [
'json'=>[
'template' => config('scout.elasticsearch.index'),
'mappings' => [
'_default_' => [
'dynamic_templates' => [
[
'strings' => [
'match_mapping_type' => 'string',
'mapping' => [
'type' => 'text',
'analyzer' => 'ik_smart',
'fields' => [
'keyword' => [
'type' => 'keyword'
]
]
]
]
]
]
]
],
],
];
$client->put($url,$param);
//記錄
$this->info("=======建立模板成功=======");
//建立index
$url = config('scout.elasticsearch.hosts')[0] . '/' . config('scout.elasticsearch.index');
//$client->delete($url);
$param=[
'json' => [
'settings' => [
'refresh_interval' => '5s',
'number_of_shards' => 1,
'number_of_replicas' => 0,
],
'mappings' => [
'_default_' => [
'_all' => [
'enabled' => false
]
]
]
]
];
$client->put($url,$param);
//記錄
$this->info("=========建立索引成功=========");
}
(2)在我的專案中我使用文章資料表來搜尋,因此需要修改post.php,也就是posts資料對於的資料模型
use Searchable;
//定義索引裡面的type
public function searchableAs()
{
return "post";
}
//定義有哪些欄位需要搜尋
public function toSearchableArray()
{
return [
'title'=>$this->title,
'content'=>$this->content,
];
}
匯入資料
使用php artisan命令匯入資料
php artisan scout:import "\App\Post"
匯入成功之後我們在瀏覽器地址輸欄入:127.0.0.1:9200/laravel54/post/23(laravel54是elasticsearch驅動定義的專案名,post物件的是我專案的post資料模型,23是某條資料的ID )
相關文章
- Laravel5.5 使用 Elasticsearch 做引擎,scout 全文搜尋LaravelElasticsearch
- 使用 Laravel Scout + ElasticSearch 實現全文搜尋LaravelElasticsearch
- Laravel5.6/vue/scout/elasticserach6.4/scout-Elasticsearch-driver 搜尋 demoLaravelVueElasticsearch
- ElasticSearch全文搜尋引擎Elasticsearch
- 認識搜尋引擎 ElasticsearchElasticsearch
- 搜尋引擎ElasticSearch18_ElasticSearch簡介1Elasticsearch
- Laravel 使用 Elasticsearch 全域性搜尋LaravelElasticsearch
- Laravel + Elasticsearch 實現中文搜尋LaravelElasticsearch
- 擴充套件laravel config 元件套件Laravel元件
- elasticsearch之拼音搜尋Elasticsearch
- [擴充套件推薦]Aliyun-oss-laravel —— Laravel最好的OSS Storage擴充套件套件Laravel
- Nebula 基於 ElasticSearch 的全文搜尋引擎的文字搜尋Elasticsearch
- 使用 Postgres 的全文搜尋構建可擴充套件的事件驅動搜尋架構套件事件架構
- ✍ 寫一個擴充套件性較強的搜尋主頁套件
- 日誌分析平臺ELK之搜尋引擎Elasticsearch叢集Elasticsearch
- Laravel Octane Workerman 擴充套件包Laravel套件
- 用elasticsearch和nuxtjs搭建bt搜尋引擎ElasticsearchUXJS
- elasticsearch 搜尋引擎工具的高階使用Elasticsearch
- 在 Spring Boot 中使用搜尋引擎 ElasticsearchSpring BootElasticsearch
- 搜尋引擎ElasticSearch18_ElasticSearch程式設計操作5Elasticsearch程式設計
- Laravel 後臺擴充套件包 Laravel-admin 多圖上傳功能之擴充套件 -- 已上傳圖片之可拖拽排序Laravel套件排序
- 開放搜尋開源相容版,支援Elasticsearch做搜尋召回引擎Elasticsearch
- [外掛擴充套件]通過標題搜尋站外資訊套件
- [擴充套件包] Laravel-eloquent-filter 減少你對篩選條件搜尋 where 的煩惱套件LaravelFilter
- Laravel優秀擴充套件包整理Laravel套件
- Laravel homestead 安裝 PHP 擴充套件LaravelPHP套件
- 分散式搜尋引擎Elasticsearch的架構分析分散式Elasticsearch架構
- 搜尋引擎ElasticSearch18_ElasticSearch的客戶端操作2Elasticsearch客戶端
- 搜尋引擎-03-搜尋引擎原理
- ASP.NET Core擴充套件庫之Http通用擴充套件ASP.NET套件HTTP
- laravel擴充套件包——laravel-dompdf和laravel-snappyLaravel套件APP
- 像使用 Laravel Query 一樣的搜尋 ElasticsearchLaravelElasticsearch
- kotlin 擴充套件(擴充套件函式和擴充套件屬性)Kotlin套件函式
- 基於 Elasticsearch 的站內搜尋引擎實戰Elasticsearch
- 解密Elasticsearch:深入探究這款搜尋和分析引擎解密Elasticsearch
- ElasticSearch分散式搜尋引擎——從入門到精通Elasticsearch分散式
- Laravel-admin 新增擴充套件介紹Laravel套件
- 1.2 - Laravel 5.6 - Extend 擴充套件機制Laravel套件
- [擴充套件包]-Laravel檢視日誌套件Laravel