Laravel Scout (Meilisearch) - 说是导入的数据,但不是
Posted
技术标签:
【中文标题】Laravel Scout (Meilisearch) - 说是导入的数据,但不是【英文标题】:Laravel Scout (Meilisearch) - Says imported data, but doesn't 【发布时间】:2021-10-07 10:14:33 【问题描述】:我已经安装并配置了 meilisearch + Laravel Scout 包。
我的模特:
class Post extends Model
use Searchable;
当我运行 php artisan scout:import 'App\Models\Post'
时,它会返回:
Imported [App\Models\Post] models up to ID: 5
All [App\Models\Post] records have been imported.
但是当我检查索引时,它是空的。为什么?
正在创建索引,但未导入数据。
meilisearch 和 Scout 包的配置相同,适用于其他一些模型。
【问题讨论】:
嗨!更新状态返回什么? docs.meilisearch.com/reference/api/… 【参考方案1】:我自己也遇到过这个问题,遇到了你的问题。我不认为您在指定应该存储在索引中的内容是您吗?
即在您的模型中,您是否创建了一个 toSearchableArray
方法,如下所示...
public function toSearchableArray(): array
return [
'name' => $this->name,
];
不管怎样,事实证明你的toSearchableArray
方法必须也返回数组中的主键,否则记录不会被索引。
public function toSearchableArray(): array
return [
'id' => $this->getKey(), // this *must* be defined
'name' => $this->name,
];
【讨论】:
感谢这解决了我的问题 :) 对于这个特定的模型,我隐藏了主键,并且删除它是正确的。谢谢! 这也解决了我的问题!没有 id,它不会被索引,这是 meilisearch 特有的东西,因为它在 laravel 的 scout doc 上并不明确。【参考方案2】:你可以尝试设置:
SCOUT_QUEUE=false
检查您的队列是否存在问题并再次运行导入。
【讨论】:
我之前试过了,还是不行。【参考方案3】:对于索引,您可以尝试:
php artisan scout:index posts
您的队列没有其他问题,请再次运行导入。
如果您有SCOUT_QUEUE=true
,请使用php artisan queue:work --daemon
开始您的队列,您的数据将开始导入。
【讨论】:
以上是关于Laravel Scout (Meilisearch) - 说是导入的数据,但不是的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 基于 Scout 配置实现 Elasticsearch
安装scount的es驱动,composer require tamayo/laravel-scout-elastic报错解决