美文网首页
Laravel Es安装与使用

Laravel Es安装与使用

作者: zmindthegap | 来源:发表于2019-04-27 13:33 被阅读0次

    一、安装JDK

    使用elasticsearch的前提是你的主机必须安装了java的JDK,而且版本必须是1.8以上。安装JDK,并设置环境变量。

    下载地址:

    https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

    图片1.png

    二、下载elasticsearch安装包;

    下载地址:

    https://github.com/medcl/elasticsearch-rtf

    三、解压安装包

    进去安装包bin目录双击elasticsearch.bat

    出现以下画面:表运行成功:在地址栏可以通过下图圈内地址访问,查看是否安装成功127.0.0.1:9200

    图片2.png

    出现如下图,表安装成功:

    图片3.png

    四、安装Scout

    (1)首先,使用 composer 包管理器来安装 Scout,如果没有安装 composer 包管理器,要先安装;接着进入laravel项目的根目录使用composer 命令安装:

    composer require laravel/scout

    (2)接下来,你需要将 ScoutServiceProvider 添加到你的 config/app.php 配置文件的 providers 数组中:(Laravel5.7不需进行此操作);

    DsdLaravel\Scout\ScoutServiceProvider::class

    (3)注册好 Scout 的服务提供者之后,你可以使用 vendor:publish Artisan 命令生成 Scout 的配置文件。这个命令会在你的 config 目录下生成 scout.php 配置文件:

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

    (4)使用 composer安装scout的es驱动:

    composer require tamayo/laravel-scout-elastic

    如出现版本问题(可以选择下面这条命令)

    composer require laravel/scout ^5.0.3

    (5)安装完驱动之后,修改config\scout.php配合文件,将驱动修改为elasticsearch

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

    并在下方添加驱动:

    'elasticsearch' => [
    
            //laravel57是项目名,可以自定义
    
            'index' => env('ELASTICSEARCH_INDEX', 'laravel57'),
    
            'hosts' => [
    
                env('ELASTICSEARCH_HOST', 'http://127.0.0.1:9200'),
    
            ],
    
        ],
    

    五、创建command命令

    (1)使用php artisan创建command命令

    php artisan make:command ESInit

    (2)执行完命令后会创建app\Console\Command\ESInit.php文件,修改ESInit.php

    //使用什么命令启动脚本
    
    protected $signature = 'es:init';
    
    //描述
    
    protected $description = 'init laravel es for post';
    

    (3)在app\Console\Kernel.php中挂载

    protected $commands = [
    
            \App\Console\Commands\ESInit::class
    
        ];
    

    (4)完成之后使用php artisan命令查看命令是否挂载成功

    六、配置

    (1)修改app\Console\Command\ESInit.php

    在上方引入
    use GuzzleHttp\Client;

    public function handle()
    
        {
    
            //创建template
    
            $client=new Client();
    
            $url=config('scout.elasticsearch.hosts')[0]. '/_template/tmp';
    
            //$client->delete($url);
    
            $param = [
    
                'json'=>[
    
                    'template' => config('scout.elasticsearch.index'),
    
                    'mappings' => [
    
                        '_default_' => [
    
                            'dynamic_templates' => [
    
                                [
    
                                    'strings' => [
    
                                        'match_mapping_type'=> 'string',
    
                                        'mapping' => [
    
                                            'type'=> 'text',
    
                                            'analyzer'=> 'ik_smart',
    
                                            'fields' => [
    
                                                'keyword' => [
    
                                                    'type'=> 'keyword'
    
                                                ]
    
                                            ]
    
                                        ]
    
                                    ]
    
                                ]
    
                            ]
    
                        ]
    
                    ],
    
                ],
    
            ];
    
            $client->put($url,$param);
    
            //记录
    
            $this->info("=======创建模板成功=======");
    
            //创建index
    
            $url = config('scout.elasticsearch.hosts')[0] . '/' . config('scout.elasticsearch.index');
    
            //$client->delete($url);
    
            $param=[
    
                'json' => [
    
                    'settings' => [
    
                        'refresh_interval'=> '5s',
    
                        'number_of_shards'=> 1,
    
                        'number_of_replicas'=> 0,
    
                    ],
    
                    'mappings' => [
    
                        '_default_' => [
    
                            '_all' => [
    
                                'enabled'=> false
    
                            ]
    
                        ]
    
                    ]
    
                ]
    
            ];
    
            $client->put($url,$param);
    
            //记录
    
            $this->info(=======创建索引成功=======");
    
        }
    

    (2)在命令行中 使用 php artisan es:init 命令查看是否创建成功

    (3)在我的项目中我使用文章数据表来搜索,因此需要修改模型文件,也就是post数据对于的数据模型加入如下代码

    use Searchable;
    
        //定义索引里面的type
    
        public function searchableAs()
    
        {
    
            return "post";
    
        }
    
        //定义有哪些字段需要搜索
    
        public function toSearchableArray()
    
        {
    
            return [
    
                'title'=>$this->title,
    
                'content'=>$this->content,
    
            ];
    
        }
    

    七、导入数据

    使用php artisan命令导入数据(命名空间加模型名)

    php artisan scout:import "\App\Post"

    出现下面表示成功


    图片4.png
    图片5.png

    之后在控制器模型中可以通过search()方法获取数据

    例子:

    App\Post::search(‘查询的数据’)->get();

    相关文章

      网友评论

          本文标题:Laravel Es安装与使用

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