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 - 如何获取文档总数?

Laravel 基于 Scout 配置实现 Elasticsearch

安装scount的es驱动,composer require tamayo/laravel-scout-elastic报错解决

带有弹性搜索的 Laravel Scout 不起作用

laravel scout searchable trait

安装laravel使用elastic的包