Laravel 结合Elasticsearch 实现全文搜索

一、安装

终端执行命令,全局安装 elasticsearch,命令如下:

brew install elasticsearch

过程中,你会看到一个报错信息,说你没有安装JavaJDK, 而且版本必须是1.8以上的,根据提示命令安装即可。

brew cask install homebrew/cask-versions/java8

安装完后,执行命令查看版本信息:java -version

然后通过brew services start elasticsearch启动服务即可。

二、创建测试项目

1、本地终端执行命令:laravel new blog,创建一个新项目,配置虚拟机正常访问。
2、修改路由web.php,代码如下:

Route::get('/', 'HomeController@index');

3、创建对应控制器和方法,执行命令:php artisan make:controller HomeController
4、.env文件中配置数据库,并创建数据库,并在表中插入数据。
5、创建模型:php artisan make:model Art
6、在HomeController控制器的index方法中写入如下代码:

return Art::search('天')->get();

记得上面 use App\Art;

三、配置elasticsearch

1、终端进入当前项目文件夹,执行命令:composer require tamayo/laravel-scout-elastic
2、接着创建配置文件:php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"
3、修改配置文件信息:

'driver' => env('SCOUT_DRIVER', 'elasticsearch'),
'elasticsearch' => [
        'index' => env('ELASTICSEARCH_INDEX', 'laravel'),
        'hosts' => [
            env('ELASTICSEARCH_HOST', 'http://localhost'),
        ],
    ],

当然,这些配置信息也可以配置到 .env文件中。

4、修改Art模型代码如下:

扫描二维码关注公众号,回复: 9902976 查看本文章
<?php
namespace App;

use Illuminate\Database\Eloquent\Model;
use Laravel\Scout\Searchable;

class Art extends Model
{
    use Searchable;
}

5、导入索引:php artisan scout:import "App\Art"

6、测试1,基于以上操作,我们来刷新浏览器,你会看到奇迹已诞生:

测试2,修改控制器代码如下

return Art::search('今天')->get();

结果如下:

至此,全文搜索已实现。还有一些其他操作,比如查询、分页等,可以参考Laravel官方文档。接下来就是运用到真实的项目中去,后续完善。

参考文献:
https://laravelacademy.org/post/9599.html
https://github.com/ErickTamayo/laravel-scout-elastic

发布了14 篇原创文章 · 获赞 1 · 访问量 91

猜你喜欢

转载自blog.csdn.net/huangdj321/article/details/104929532