laravel安装
elasticsearch scout
,用的过程中,发现一个问题,只能存在一个模板和一个索引,用的是elasticsearch 6。
一,发现问题
config/scout.php
'elasticsearch' => [
'index' => env('ELASTICSEARCH_QUESTION', 'question'),
'hosts' => [
env('ELASTICSEARCH_HOST', 'http://localhost:9200'),
],
],
上面设置一下索引名
extend('elasticsearch', function($app) {
return new ElasticsearchEngine(ElasticBuilder::create()
->setHosts(config('scout.elasticsearch.hosts'))
->build(),
config('scout.elasticsearch.index') //底层这块就写死了
);
});
}
}
二,解决办法
1,修改config/scout.php
'elasticsearch' => [
'index' => env('ELASTICSEARCH_QUESTION', 'question'),
'exam' => env('ES_EXAM', 'exam'),
'question' => env('ES_QUESTION', 'question'),
'hosts' => [
env('ELASTICSEARCH_HOST', 'http://localhost:9200'),
],
],
2,创建es模板和索引
php artisan make:command ESQuestion
php artisan make:command ESExam
在app/console/commands目录下会产生二个文件,怎么修改,参考文章开头的连接
3,初始化es模板和索引
php artisan es:question
php artisan es:exam
4,生成models
php artisan make:model ./Models/t_es_question
php artisan make:model ./Models/t_es_exam
5,修改models
//t_es_question修改如下
public function __construct()
{
\Config::set('scout.elasticsearch.index', config('scout.elasticsearch.question'));
parent::__construct();
}
//t_es_exam修改如下
public function __construct()
{
\Config::set('scout.elasticsearch.index', config('scout.elasticsearch.exam'));
parent::__construct();
}在
在调用不同model前指定index,这样可以了,还有一种方式是,就是改底层代码,改底层花的时间就比较长了。
6,导入数据
php artisan scout:import "App\Models\t_es_question"
php artisan scout:import "App\Models\t_es_exam"