美文网首页
laravel+Elasticsearch

laravel+Elasticsearch

作者: 手扶拖拉机_6e4d | 来源:发表于2019-07-21 01:46 被阅读0次

    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

    相关文章

      网友评论

          本文标题:laravel+Elasticsearch

          本文链接:https://www.haomeiwen.com/subject/ozmplctx.html