laravel+Elasticsearch

2019-07-21  本文已影响0人  手扶拖拉机_6e4d

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
上一篇下一篇

猜你喜欢

热点阅读