在使用 scout 弹性搜索时,我还需要对模型及其相关字段使用相同的索引。我创建了索引,但多个模型未映射到相同的索引。同样对于相同模型的相关字段也不会迁移。
例如。
我的索引是lead_index
A型有B型
模型 A 是可搜索模型
模型 A 和模型 B 的所有字段都在模型 A 中提及
使用索引运行模型更新对模型 A 来说很好,但在尝试与模型 B 映射时会引发错误,因为多个模型不能使用相同的索引进行映射。
在使用 scout 弹性搜索时,我还需要对模型及其相关字段使用相同的索引。我创建了索引,但多个模型未映射到相同的索引。同样对于相同模型的相关字段也不会迁移。
例如。
我的索引是lead_index
A型有B型
模型 A 是可搜索模型
模型 A 和模型 B 的所有字段都在模型 A 中提及
使用索引运行模型更新对模型 A 来说很好,但在尝试与模型 B 映射时会引发错误,因为多个模型不能使用相同的索引进行映射。
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();