本人的搜索引擎采用的是Laravel+Scout+ElasticSearch组合,但是在使用的过程中发现,当第一次产生数据以后,服务器好像就产生了缓存模板,后面所有的数据都是采用第一次的格式导入ElasticSearch。
比如:
我有2个model:Post和Article,
Post 的searchableAs()的返回值设置为'post';
Article的searchableAs()的返回值设置为'article';
接着,当import Post之后,ElasticSearch自动生成索引post/post;
之后,再import Article发现,Article也被导入到索引post/post中了;
之后,无论导入其他什么model,都是导入到post/post中,searchableAs()感觉失去了应有的效果;
另外,model中设置的toSearchableArray()字段也是,如果刚开始设置的是
return [
'title' => $this->title,
'content' => $this->dst,
];
后面,如果想要再添加一个字段,sort
return [
'title' => $this->title,
'content' => $this->dst,
'sort' => $this->dst
];
会发现,新的字段根本添加不进去,各种操作都没办法搞定,
php artisan cache:clear
php artisan route:clear
php artisan clear-compiled
以上方法都试过一遍了,都没用,怀疑是缓存问题,但又不知道是什么缓存导致的。
以上操作的真实目的,为了实现多索引:
根据网上大神指点,在model的构造方法当中修改了index的值,按道理来说应该可以参数不同的index,但因为缓存干扰,最后只能导入到post/post当中。
function __construct($params=[])
{
\Config::set('scout.elasticsearch.index', config('scout.elasticsearch.article'));
parent::__construct($params);
}
求解,以上问题是否是因为Scout的缓存机制导致的?
如果是,应该如何取消这个缓存机制?