搜索关系数据laravel scout elasticsearch

时间:2019-07-13 16:00:38

标签: laravel elasticsearch laravel-scout

使用侦察员弹性搜索时,我还需要为模型及其相关字段使用相同的索引。 我创建了索引,但是多个模型没有映射到相同的索引。同样,对于相同模型,相关字段不会迁移。

例如。

我的索引是lead_index

模型A具有模型B

模型A是可搜索的模型

在模型A中提到了模型A和模型B的所有字段

使用模型A运行带有索引的模型更新很好,但是由于无法使用相同的索引映射多个模型,因此在尝试与模型B映射时会引发错误。

1 个答案:

答案 0 :(得分:0)

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();