前面章节中已经安装完成 elasticsearch和ik插件接下来需要安装 laravel框架搜索扩展:
1.安装laravel/scout
(https://learnku.com/docs/laravel/5.8/scout/3946#installation)
首先,通过 Composer 包管理器来安装 Scout:
composer require laravel/scout
安装过程如下:
vagrant@homestead:~/code/social-contact$ composer require laravel/scout Using version ^7.1 for laravel/scout ./composer.json has been updated Loading composer repositories with package information Updating dependencies (including require-dev) Package operations: 1 install, 0 updates, 0 removals - Installing laravel/scout (v7.1.2): Downloading (100%) laravel/scout suggests installing algolia/algoliasearch-client-php (Required to use the Algolia engine (^2.2).) Writing lock file Generating optimized autoload files > Illuminate\Foundation\ComposerScripts::postAutoloadDump > @php artisan package:discover --ansi Discovered Package: beyondcode/laravel-dump-server Discovered Package: fideloper/proxy Discovered Package: laravel/scout Discovered Package: laravel/tinker Discovered Package: nesbot/carbon Discovered Package: nunomaduro/collision Package manifest generated successfully.
注册服务提供器,需要将 ScoutServiceProvider
添加到配置文件 config/app.php
的 providers
数组中。
config/app.php
'providers' => [ . . . Laravel\Scout\ScoutServiceProvider::class, ],
Scout 安装完成后,使用 vendor:publish
Artisan 命令来生成 Scout 配置文件。这个命令将在你的 config
目录下生成一个 scout.php
配置文件。
$ php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"
执行成功如下提示:
vagrant@homestead:~/code/social-contact$ php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider" Copied File [/vendor/laravel/scout/config/scout.php] To [/config/scout.php] Publishing complete.
2.安装scout的es驱动
(https://github.com/ErickTamayo/laravel-scout-elastic)
因为要使用 elasticsearch做搜索引擎,所以我们要用到一个叫 tamayo/laravel-scout-elastic 的包。
通过composer安装laravel-scout-elastic:
composer require tamayo/laravel-scout-elastic
安装成功提示如下:
vagrant@homestead:~/code/social-contact$ composer require tamayo/laravel-scout-elastic Using version ^5.0 for tamayo/laravel-scout-elastic ./composer.json has been updated Loading composer repositories with package information Updating dependencies (including require-dev) Package operations: 5 installs, 0 updates, 0 removals - Installing react/promise (v2.7.1): Downloading (100%) - Installing guzzlehttp/streams (3.0.0): Downloading (100%) - Installing guzzlehttp/ringphp (1.1.1): Downloading (100%) - Installing elasticsearch/elasticsearch (v5.5.0): Downloading (100%) - Installing tamayo/laravel-scout-elastic (5.0.0): Downloading (100%) Writing lock file Generating optimized autoload files > Illuminate\Foundation\ComposerScripts::postAutoloadDump > @php artisan package:discover --ansi Discovered Package: beyondcode/laravel-dump-server Discovered Package: fideloper/proxy Discovered Package: laravel/scout Discovered Package: laravel/tinker Discovered Package: nesbot/carbon Discovered Package: nunomaduro/collision Discovered Package: tamayo/laravel-scout-elastic Package manifest generated successfully.
添加服务提供器到 config/app.php 的 providers 数组中。
config/app.php
'providers' => [ ... Laravel\Scout\ScoutServiceProvider::class, ... ScoutEngines\Elasticsearch\ElasticsearchProvider::class, ],
3. 修改配置文件
在 config/scout.php
文件中添加如下代码。默认使用的是 algolia 引擎,我们要使用 elasticsearch 做引擎。
config/scout.php
'driver' => env('SCOUT_DRIVER', 'elasticsearch'), ... //配置索引驱动 'elasticsearch' => [ 'index' => env('ELASTICSEARCH_INDEX', 'laravel58'), 'hosts' => [ env('ELASTICSEARCH_HOST', 'http://127.0.0.1:9200'), ], ], ...
配置文件中的elasticsearch驱动中index=>env('索引常量名称','索引名字'),hosts=>([ env('ELASTICSEARCH_HOST', 'http://localhost:9200'),])
4.配置.env 文件,添加如下代码。
# scout配置 SCOUT_DRIVER=elasticsearch #选择搜索引擎 SCOUT_PREFIX= # elasticsearch 配置 ELASTICSEARCH_INDEX=laravel58 #设置索引 # elasticsearch服务器地址