5年+ Elasticsearch 电商实战经验深度复盘

samri
发布于 2022-4-19 12:42
浏览
0收藏

5年+ Elasticsearch 电商实战经验深度复盘-鸿蒙开发者社区

回顾自己过去的5年,从一名后端开发工程师,自我摸索、学习、探究,成为一名搜索开发工程师。复盘总结自己经历过的搜索的三个阶段,可简要概括为:(1)关键词搜索、(2)相关性搜索、(3)探索式搜索。

具体如下图:

 5年+ Elasticsearch 电商实战经验深度复盘-鸿蒙开发者社区
 • 关键词搜索:主要借助关系型数据库如Mysql 实现,搜索效率低下、性能差、效果差强人意。
 • 相关性搜索:借助 Solr 和 Elasticsearch 实现,基于规则文本分词实现千人一面,对词典和现有知识依赖较高。
 • 探索性搜索:借助elasticsearch、Flink、milvus、Word2vec、TensorFlow实现,大数据和深度学习框架整合,符合用户兴趣习惯,真正实现了千人千面。达到了类似主流电商平台:京东、天猫、拼多多的效果。

5年+ Elasticsearch 电商实战经验深度复盘-鸿蒙开发者社区
当前所在公司属于电商行业,其搜索大体流程上可以归纳为几个阶段 QU(query understanding)->召回->粗排->精排->重排,本文会对QU, 粗排,精排,重排过程简要概述,重点讲解 Elasticsearch 作为搜索引擎在电商搜索流程中的具体应用场景。

5年+ Elasticsearch 电商实战经验深度复盘-鸿蒙开发者社区

2.1 QU(query understanding)

目的:关键词合理分词,理解关键词意图

 

用户搜索时,搜索系统通常会对搜索词先做分词处理,然后经过搜索引擎(ES)进行相似度计算,召回相关doc。但会出现以下badcase难以处理:

 

 • 错词:用户输入错误导致搜索无结果;
 • 同义词:如中英文、简拼等;
 • 口语化词。所以会引入NLP工程师通过算法做更进一步的Query理解,通常有词性识别,实体识别,意图识别,词权重等流程。

 

2.2 召回

目的:提升搜索效率、挖掘潜在相关商品。

 

召回模块需要尽可能多的召回商品,除结合文本相关性之外,通常还会结合用户行为偏好,热榜高质量商品,向量检索,等多种方式尽可能召回相关商品。

 

2.3 粗排
目的:粗选高质量,相关度高商品,降低精排模型压力。

 

召回模块的召回结果通常是成千上万的,而精排模型受制于模型复杂度,资源,性能等要求,往往仅能支持数百商品同时预测,所以需要对召回候选集加以处理。

汇总商品质量分、意图分、实体分、文本分,然后通过打分公式,计算汇总每个商品的分数,最终对召回结果取 topN,从而达到从召回结果选取相关度高,质量高,符合关键词意图和实体识别结果,成交效率高的 TopN商品,最终输入精排模型。

 

2.4 精排


目的:结合用户行为,商品特征进行二次排序。

 

排序引擎会结合用户的静态特征,实时行为特征和商品特征,输入排序模型,预测用户的点击、加购、成交概率,然后通过精排公式进行二次算分,最终得出商品的精排分数。

 

2.5 重排
目的:结合产品及关键词特点,最终处理。

 

经过粗排,精排后的商品有时候会存在商品类目或标签集中分布,头部商品过度曝光等特点,为保证展示结果的多样性,公平性,往往需要对列表结果进行重排,通常的打散重排方法有分桶法,滑动窗口法,多权重打散等方法。

 

3、Elasticsearch在搜索过程中的应用

                                                                                                                                                                                 


Elasticsearch 在我司电商搜索中主要应用在以下场景:

5年+ Elasticsearch 电商实战经验深度复盘-鸿蒙开发者社区


结合 QU 结果,扩展多路召回,丰富召回结果集。

 

 • 文本召回
搜索词与搜索字段域相关性计算(ES multi_fields)。

 

 • 意图召回

搜索词类目,品牌,人群,性别,属性召回。

 

 • 实体召回
品牌,类目,标签等召回。

 

 • 向量召回
基于向量相似度召回相关商品。

 

 • 用户行为召回
聚合用户的类目,品牌,地域等信息,召回一批高度相似的商品。

 

3.2 补充相关性得分

多路召回中的热榜商品召回,离线模型等召回路结果通常是离线计算所得,无法实时匹配关键词及筛选条件,需要经过 Elasticsearch 补充相关性得分,语句如下:

5年+ Elasticsearch 电商实战经验深度复盘-鸿蒙开发者社区5年+ Elasticsearch 电商实战经验深度复盘-鸿蒙开发者社区

3.3 商品打散抽样
通过使用 collapse 对搜索结果进行去重取样,可以达到商品去重的目的。

 

但需注意此时搜索结果的total 是取样之前的 total,如需准确获取 total,可以使用聚合的方式进行操作,具体语句如下:

5年+ Elasticsearch 电商实战经验深度复盘-鸿蒙开发者社区

5年+ Elasticsearch 电商实战经验深度复盘-鸿蒙开发者社区
做搜索工程师久了之后,会觉得 Elasticsearch 在搜索场景中的贡献有限,尤其是当搜索对NLP及排序算法越发依赖之后,越发有这样的想法。但回想起来,Elasticsearch 的应用场景又不仅限于搜索场景,包括但又不仅限于数据数据统计分析,多媒体数据向量检索去重等。

 

在面对搜索系统不断进化的过程中,常常有这样的感叹:技术日新月异,新技术永远学不完,算法模型参与的场景越来越多,技术复杂度越来越高,这又何尝不是互联网行业的特点呢?但是我们技术人永远都在面对变化不是么?借用一句富含阿里味的话:永远不变的是变化。

 

但我应该如何去面对呢?我想我已经想好了自己的面对方法:深挖底层,方能立于不败之地,深入了解数据结构,这样当了解一门新的技术时才能灵活掌握快速上手,做到触类旁通。做到极致,把自己的事情做到极致,或许会用不一样的收获。坚持努力,在自己热爱的领域持续投入,因为我坚信日拱一卒,功不唐捐。

 

5年+ Elasticsearch 电商实战经验深度复盘-鸿蒙开发者社区
作者:Hello郎,Elastic 认证工程师,某电商平台资深搜索工程师。

 

审稿人:铭毅天下,Elastic 认证工程师,Elastic 中国合作培训讲师,阿里云 MVP,Elastic Stack 技术博文全网累计阅读量 1000万+。
5年+ Elasticsearch 电商实战经验深度复盘-鸿蒙开发者社区

上个月,死磕 Elasticsearch 知识星球搞了:“群智涌现”杯输出倒逼输入——Elastic干货输出活动。

 

后续会不定期逐步推出系列文章,目的:以文会友,“输出倒逼输入”。

5年+ Elasticsearch 电商实战经验深度复盘-鸿蒙开发者社区


1、重磅 | 死磕 Elasticsearch 方法论认知清单(2021年国庆更新版)


2、Elasticsearch 7.X 进阶实战私训课(口碑不错


3、如何系统的学习 Elasticsearch ?

 

 

公众号:铭毅天下Elasticsearch

分类
已于2022-7-19 15:31:11修改
收藏
回复
举报
回复
    相关推荐