7.2. 分面搜索

本教程最新版为 8.x,当前版本已放弃维护,请阅读最新版本!

分面搜索

现在我们完成了 Elasticsearch 搜索的改造,实现了最基本的搜索功能,接下来我们将要把这个搜索引擎做得更强大。

这一节我们将要实现的功能是分面搜索,我们可以在京东上搜索一下『内存条』:

file

可以看到京东把一些属性聚合在一起并做成了链接,我们可以直接点击链接来进一步筛选商品,这个就叫『分面搜索』。

分面搜索是电商系统搜索引擎一个非常重要的功能,可以帮助用户更方便地搜索到自己想要的商品。

1. 聚合

要实现分面搜索并不是一个简单的事情,我们将一步一步往目标靠近,首先我们试着把搜索结果中所有的商品属性名取出来(即 properties.name),比如上图中的『频率』、『单套容量』,这就需要用到 Elasticsearch 的聚合。

Elasticsearch 中的聚合与 SQL 语句的 group by 有些类似,但更加灵活和强大,我们来看一下例子:

>>> $params = [
    'index' => 'products',
    'type'  =...

本文章首发在 LearnKu.com 网站上。

为了保证课程的高品质,我们需要对课程进行收费。付费后 才能观看剩余内容。 购买

上一篇 下一篇
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 6

finding
分面搜索 bug?
0 个点赞 | 4 个回复 | 问答 | 课程版本 5.5
Flourishing
老师,这一章感觉难度很大啊
0 个点赞 | 3 个回复 | 问答 | 课程版本 5.5
xuelong
感觉这个数组形式一个不小心就要写错啊
0 个点赞 | 2 个回复 | 问答 | 课程版本 5.8
幽弥狂
Elasticsearch 中文文档中没有找到关于分面搜索等文档?
0 个点赞 | 2 个回复 | 问答 | 课程版本 5.5
xll123
报错 [nested] nested path [properties] is not nested
0 个点赞 | 1 个回复 | 问答 | 课程版本 8.x