1.概述:
ElasticSearch是一款基于Lucene构建的开源、分布式、RESTful接口的全文搜索引擎。ElasticSearch还是一个分布式文档数据库,其中每个字段都可以被索引,每个字段的数据都可以被搜索,ES能够横向扩展至数以百计的服务器存储以及处理PB级的数据,本文主要是介绍ES在Laravel框架中的基本使用。
2.开启服务
2.1>需要先安装ElasticSearch和ElasticSearch-Head,elasticsearch-head是用于监控 Elasticsearch 状态的客户端插件,包括数据可视化、执行增删改查操作等,需要先安装nodejs, elasticsearch-head操作界面如下图:
988AA4DC-FF43-4304-BE12-9FE92F031C19.png
我的mac本上给定的ElasticSearch端口号为9200,elasticsearch-head端口号为8401
2.2>启动ES: (进入到ES安装目录) ./bin/elasticsearch
启动es-head : (进入到elasticsearch-head安装目录) 执行 npm run start
2A79A696-2E3D-4109-A5E0-145CA71D7319.png
3.在Laravel中如何应用
3.1>安装scout
composer require laravel/scout
在/config/app.php 的providers数组中添加:
Laravel\Scout\ScoutServiceProvider::class
再执行命令:
php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"
3.2>安装 laravel-scout-elastic
composer require tamayo/laravel-scout-elastic
在/config/app.php 的providers数组中添加:
ScoutEngines\Elasticsearch\ElasticsearchProvider::class
添加完成,执行命令发布扩展包资源,(会在/config目录下生成scout.php文件,scout.php原本是位于/vendor/laravel/scout/config 目录下)
php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"
修改/config/scout.php文件:
'driver' => env('SCOUT_DRIVER', 'elasticsearch'),
'elasticsearch' => [
'index' => env('ELASTICSEARCH_INDEX', 'video'),
'hosts' => [
env('ELASTICSEARCH_HOST', 'http://127.0.0.1:9200')
],
]
在.env中添加ELASTICSEARCH_HOST:
# 账号:密码@域名:端口
ELASTICSEARCH_HOST=elastic:XXXXXXX@127.0.0.1:9200
3.3>创建命令
php artisan make:command ESinit
会在/app/Console/Commands/ 目录下创建一个ESinit.php文件
class ESinit extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'es:init'; //php artisan es:init
/**
* The console command description.
*
* @var string
*/
protected $description = 'init laravel es for news';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
}
}
在/app/Console/Kernel.php中:
protected $commands = [
\App\Console\Commands\ESinit::class,
];
3.4>安装Http客户端
composer require guzzlehttp/guzzle
3.5>在elasticsearch-head界面中手动创建一个video的索引
936A6342-BA41-44B6-8A12-05149466AC9A.png
然后手动插入几条数据(第一个video代表索引,第二个video代表类型)
0B5FD6AB-5558-42AC-8266-556A27724257.png
或者直接创建video结构(video索引必须是不存在)
B7BE2A36-58BC-40AD-82C5-509A377CFA8A.png
网友评论