首页编程PHPLaravelLaravel社区网站实战文章详细

8.3 Laravel5.8 基于Elasticsearch 引擎,scout 全文搜索安装与配置

原创 2022-09-13 12:57:54 689
前面章节中已经安装完成 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.phpproviders 数组中。
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服务器地址

推荐