Laravel中使用ElasticSearch

环境安装

ElasticSearch安装

es的安装,参考elasticsearch安装与配置介绍这篇文章

composer安装Laravel5.6

composer create-project --prefer-dist laravel/laravel laravel_es 5.6.*

Laravel中使用ElasticSearch_第1张图片

安装laravel使用es的包

安装 Scout 全文搜索

文档地址: https://learnku.com/docs/laravel/5.6/scout/1417#installation

composer require laravel/scout

Laravel中使用ElasticSearch_第2张图片

php artisan vendor:publish--provider="Laravel\Scout\ScoutServiceProvider"

会生成一个config/scout.php配置文件

Laravel中使用ElasticSearch_第3张图片

安装Scout的es驱动

git地址: https://github.com/ErickTamayo/laravel-scout-elastic

composer require tamayo/laravel-scout-elastic

Laravel中使用ElasticSearch_第4张图片

安装报错了,提示和前面安装的laravel/scout版本不兼容,然后尝试安装低版本,依然不行

Laravel中使用ElasticSearch_第5张图片

既然降低Scout的es驱动版本不行,就只能降低 laravel/scout的版本了,将原来的7.1降到5.0:

1. 删除已经安装好的laravel/scout包

composer remove laravel/scout

Laravel中使用ElasticSearch_第6张图片

2. 重新安装laravel/scout低版本包

composer require laravel/scout ^5.0.3

Laravel中使用ElasticSearch_第7张图片

3. 安装Scout的es驱动

Laravel中使用ElasticSearch_第8张图片

添加service provider

Laravel\Scout\ScoutServiceProvider::class,

ScoutEngines\Elasticsearch\ElasticsearchProvider::class,

Laravel中使用ElasticSearch_第9张图片

修改配置文件

修改驱动为elasticsearch

'driver' => env('SCOUT_DRIVER', 'elasticsearch'),

Laravel中使用ElasticSearch_第10张图片

定义elasticsearch驱动

'elasticsearch' => [

    'index' => env('ELASTICSEARCH_INDEX', 'laravel_es_test'),  //索引名,自定义

    'hosts' => [

        env('ELASTICSEARCH_HOST', 'http://127.0.0.1:8301'),  //es的host,自己在安装es配置的地址,我这里设置的端口是8301,es默认的是9200

    ],

],

Laravel中使用ElasticSearch_第11张图片

使用es

确保es已经启动

Laravel中使用ElasticSearch_第12张图片

创建模板和创建索引

ElasticSearch的简单使用,这篇文章介绍了模板和索引的概念以及常见使用方式,可以作为参考,在文章中一系列的操作都是基于postman这个工具进行的,在laravel中有强大的command,这里就使用他

自定义命令

1. 创建command

php artisan make:command EsInit

Laravel中使用ElasticSearch_第13张图片

2. 编辑handle

引入Guzzle这个PHP HTTP客户端,他可以在php中直接发送各种的http请求

composer require guzzlehttp/guzzle

Laravel中使用ElasticSearch_第14张图片

handle具体实现

Laravel中使用ElasticSearch_第15张图片
Laravel中使用ElasticSearch_第16张图片

3. 将自定义的命令注册到laravel artisan上

\App\Console\Commands\EsInit::class,

Laravel中使用ElasticSearch_第17张图片

执行 “php artisan list” 查看刚刚自定义的命令

命令创建模板和索引

Laravel中使用ElasticSearch_第18张图片

在Laravel中使用es

创建模型

先建立一个文章数据表并且添加测试数据,在Laravel中可以使用migration,我这里直接使用navicat了

Laravel中使用ElasticSearch_第19张图片

创建对应Model文件

Laravel中使用ElasticSearch_第20张图片

修改Article的模型

Laravel中使用ElasticSearch_第21张图片

向es中导入Article的数据

Laravel中使用ElasticSearch_第22张图片

简单测试

添加数据

Laravel中使用ElasticSearch_第23张图片
Laravel中使用ElasticSearch_第24张图片

查询数据

在你的控制器总写如下查询逻辑

Laravel中使用ElasticSearch_第25张图片
Laravel中使用ElasticSearch_第26张图片

你可能感兴趣的:(Laravel中使用ElasticSearch)