Laravel5.4中文分词搜索-使用 Laravel Scout,Elasticsearch,ik 分词(二)

上一篇环境搭建地址:https://blog.csdn.net/huangfenhu/article/details/94004316

安装Scout

  1. 进入laravel项目的根目录使用composer 命令安装:
		composer require laravel/scout

Laravel5.4中文分词搜索-使用 Laravel Scout,Elasticsearch,ik 分词(二)_第1张图片
2. 接下来,你需要将 ScoutServiceProvider 添加到你的 config/app.php 配置文件的 providers 数组中:

		'providers' => [
			......
			Laravel\Scout\ScoutServiceProvider::class,
		],
  1. 使用 vendor:publish Artisan 命令生成 Scout 的配置文件,这个命令会在你的 config 目录下生成 scout.php 配置文件:
		php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

Laravel5.4中文分词搜索-使用 Laravel Scout,Elasticsearch,ik 分词(二)_第2张图片
4. 使用 composer安装scout的es驱动:

		composer require tamayo/laravel-scout-elastic

Laravel5.4中文分词搜索-使用 Laravel Scout,Elasticsearch,ik 分词(二)_第3张图片
5. 添加 Provider到config/app.php配置文件中:

	 'providers' => [
			......
			Laravel\Scout\ScoutServiceProvider::class,
			ScoutEngines\Elasticsearch\ElasticsearchProvider::class,
	    ],
  1. 安装完驱动之后,修改config\scout.php配合文件,将驱动修改为elasticsearch
	'driver' => env('SCOUT_DRIVER', 'elasticsearch'),
  1. 在config\scout.php配合文件下方添加驱动:
  'elasticsearch' => [
                //esk相当于数据库名称,可以自定义
                'index' => env('ELASTICSEARCH_INDEX', 'esk'),
                'hosts' => [
                    env('ELASTICSEARCH_HOST', 'http://127.0.0.1:9200'),
                ],
            ],

创建command命令

  1. 使用php artisan创建command命令:
 	 php artisan make:command ESInit
  1. 执行完命令后会创建app\Console\Command\ESInit.php文件,修改ESInit.php:
	//使用什么命令启动脚本
	 protected $signature = 'es:init';
	 //描述
	 protected $description = 'init laravel es for post';
  1. 在app\Console\Kernel.php中挂载:

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

Laravel5.4中文分词搜索-使用 Laravel Scout,Elasticsearch,ik 分词(二)_第4张图片
5. 进入terminal,输入 php artisan list 命令,显示以下信息表示挂载成功:
在这里插入图片描述

安装guzzlehttp/guzzle 扩展

 composer require guzzlehttp/guzzle

配置

修改app\Console\Command\ESInit.php:

 public function handle()
    {
        $client = new Client(); //这里的Clinet()是你vendor下的GuzzleHttp下的Client文件
        $url = config('scout.elasticsearch.hosts')[0].'/inssa';   //这里写logstash配置中index参数
        $client->delete($url);//确定没有这个url

        /*
         * 这个模板作用于我要做用的索引
         * */
        $param = [
            'json'=>[
                /*
                 * 这句是取在scout.php(scout是驱动)里我们配置好elasticsearch引擎的
                 * index项。
                 * PS:其实都是取数组项,scout本身就是return一个数组,
                 * scout.elasticsearch.index就是取
                 * scout[elasticsearch][index]
                 * */
                'template'=>config('scout.elasticsearch.index'),
                'mappings'=>[
                    '_default_'=>[
                        'dynamic_templates'=>[
                            [
                                'string'=>[
                                    'match_mapping_type'=>'string',//传进来的是string
                                    'mapping'=>[
                                        'type'=>'text',//把传进来的string按text(文本)处理
                                        'analyzer'=>'ik_smart',//用ik_smart进行解析(ik是专门解析中的插件)
                                        'fields'=>[
                                            'keyword'=>[
                                                'type'=>'keyword'
                                            ]
                                        ]
                                    ]
                                ]
                            ]
                        ]
                    ]
                ],
            ],
        ];
        $client->put($url,$param);

        $this->info('============create template success============');

//创建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('============create index success============');
    }

进入terminal,输入 php artisan es:init 命令,显示以下信息表示修改成功:
在这里插入图片描述

下一篇laravel5.4搜索功能实现地址:https://blog.csdn.net/huangfenhu/article/details/94018528

你可能感兴趣的:(laravel)