首页 > 解决方案 > 搜索关系数据 laravel scout elasticsearch

问题描述

在使用 scout 弹性搜索时,我还需要对模型及其相关字段使用相同的索引。我创建了索引,但多个模型未映射到相同的索引。同样对于相同模型的相关字段也不会迁移。

例如。

我的索引是lead_index

A型有B型

模型 A 是可搜索模型

模型 A 和模型 B 的所有字段都在模型 A 中提及

使用索引运行模型更新对模型 A 来说很好,但在尝试与模型 B 映射时会引发错误,因为多个模型不能使用相同的索引进行映射。

标签: laravelelasticsearchlaravel-scout

解决方案


Laravel Scout 有raw方法,所以你可以自己映射结果

$modelB = new SearchResults(ModelA::search('zonga')->raw())->first()->modelB;

如果您需要在多个模型之间进行搜索,请考虑使用具有多模型搜索功能的引擎。https://github.com/matchish/laravel-scout-elasticsearch#search-amongst-multiple-models

Mixed::search('title:Barcelona or to:Barcelona')
    within(implode(',', [
        (new Ticket())->searchableAs(),
        (new Book())->searchableAs(),
    ]))
->get();

推荐阅读