Elasticsearch 实战基于搜索引擎的推荐系统完整实现方案前言一、 Elasticsearch 为什么能做推荐系统核心优势适用场景二、推荐系统整体架构极简生产架构三、ES 实现推荐的 5 大核心算法实战可用1. 基于内容相似度推荐Content-Based—— **最常用、最核心**2. 基于标签/关键词加权推荐3. 基于用户行为推荐User Behavior4. 基于协同过滤思想ES 简化版5. 实时个性化推荐四、实战步骤 1构建数据模型商品/内容创建索引商品推荐示例五、实战步骤 2基于内容相似度推荐核心需求ES DSL 实现直接复制使用原理六、实战步骤 3基于用户行为推荐猜你喜欢需求实现思路DSL 示例七、实战步骤 4“看过该商品的人还看过” 推荐实现思路简化版 DSL八、实战步骤 5Spring Boot 实现推荐接口九、ES 推荐系统执行流程图十、生产环境优化策略必看十一、ES 推荐 vs 传统机器学习推荐十二、总结The Begin点点关注收藏不迷路前言推荐系统已经成为各类 App、商城、中台系统的标配功能。大家通常会认为推荐系统必须依赖机器学习、协同过滤、Embedding但实际上80% 的业务场景完全可以用 Elasticsearch 低成本、高性能地实现高质量推荐。ES 天生支持内容相似匹配、标签过滤、协同过滤、权重排序、实时推荐不需要复杂算法模型接入快、稳定性高、支持高并发非常适合中小企业、电商、内容平台、日志推荐、商品推荐场景。本文将从推荐原理、架构、5 种实战推荐算法、完整代码、流程图全方位讲解让你一天内上线一套生产级推荐系统。一、 Elasticsearch 为什么能做推荐系统核心优势✅基于内容相似度推荐最常用✅基于用户行为推荐点击/收藏/浏览✅基于标签、分类、权重推荐✅基于协同过滤思想推荐✅实时性极高写入即可推荐✅高并发、低延迟毫秒级返回✅无需机器学习模型零算法门槛适用场景商品推荐猜你喜欢文章/视频推荐相关商品推荐关联搜索推荐相似内容推荐个性化首页推荐二、推荐系统整体架构极简生产架构用户行为日志点击/收藏/浏览用户画像/商品画像Elasticsearch 存储画像 内容特征推荐请求ES 执行推荐查询相似度计算 权重排序 过滤返回推荐列表三、ES 实现推荐的 5 大核心算法实战可用1. 基于内容相似度推荐Content-Based——最常用、最核心根据标题、描述、标签、分类计算相似度。2. 基于标签/关键词加权推荐给不同标签设置权重例如品牌权重 5分类权重 3价格区间权重 23. 基于用户行为推荐User Behavior用户看过 → 推荐同类目、同标签商品。4. 基于协同过滤思想ES 简化版“看过该商品的人也看过”。5. 实时个性化推荐结合用户画像 实时行为实时计算。四、实战步骤 1构建数据模型商品/内容创建索引商品推荐示例PUT/goods{mappings:{properties:{goodsId:{type:keyword},title:{type:text,analyzer: ik_max_word},category:{type:keyword},// 分类brand:{type:keyword},// 品牌tags:{type:keyword},// 标签 [“手机”,“5G”,“快充”]price:{type:double},sellerId:{type:keyword}}}}五、实战步骤 2基于内容相似度推荐核心需求打开商品详情页 →推荐相似商品ES DSL 实现直接复制使用GET/goods/_search{size:10,query:{function_score:{query:{bool:{must:[{match:{title:华为Mate60 Pro}},{match:{category:手机}}],must_not:[{term:{goodsId:1001}}// 排除当前商品]}},functions:[{filter:{term:{brand:华为}},weight:10},{filter:{terms:{tags:[5G,快充]}},weight:5},{filter:{range:{price:{gte:4000,lte:8000}}},weight:3}],score_mode:sum,boost_mode:multiply}}}原理must匹配相似内容must_not排除自身functions给品牌、标签、价格设置权重分数越高 → 越相似 → 排在前面六、实战步骤 3基于用户行为推荐猜你喜欢需求用户浏览过手机、华为、5G → 推荐高匹配度商品。实现思路把用户的历史行为 → 构建成 ES 查询语句。DSL 示例GET/goods/_search{query:{bool:{should:[{term:{category:{value:手机,boost:5}}},{term:{brand:{value:华为,boost:10}}},{terms:{tags:[5G,快充,拍照]}}]}}}七、实战步骤 4“看过该商品的人还看过” 推荐实现思路记录用户行为user_behavior索引查询购买/点击过该商品的用户查询这些用户还看过哪些商品排序 → 推荐简化版 DSLGET/goods/_search{query:{bool:{must:[{terms:{userId:[用户ID列表]}},{term:{category:手机}}]}}}八、实战步骤 5Spring Boot 实现推荐接口核心依赖Spring Data ElasticsearchServicepublicclassRecommendService{AutowiredprivateElasticsearchRestTemplatetemplate;// 相似商品推荐publicListGoodsrecommendSimilar(LonggoodsId,Stringtitle,Stringcategory){NativeSearchQueryquerynewNativeSearchQueryBuilder().withQuery(QueryBuilders.functionScoreQuery(QueryBuilders.boolQuery().must(QueryBuilders.matchQuery(title,title)).must(QueryBuilders.termQuery(category,category)).mustNot(QueryBuilders.termQuery(goodsId,goodsId)),ScoreFunctionBuilders.weightFactorFunction(10).filter(QueryBuilders.termQuery(brand,华为)))).withPageable(PageRequest.of(0,10)).build();SearchHitsGoodshitstemplate.search(query,Goods.class);returnhits.stream().map(SearchHit::getContent).toList();}}九、ES 推荐系统执行流程图用户进入页面获取用户/商品特征构建ES推荐查询相似度匹配 权重计算过滤排除已看/下架/缺货按得分排序返回推荐结果十、生产环境优化策略必看标签化所有内容标签越详细推荐越准使用 function_score 控制权重核心优化缓存热门推荐结果Redis 缓存实时行为实时写入 ES过滤下架、缺货、违规商品随机打散结果避免推荐固化使用 filter 代替 query 提升性能十一、ES 推荐 vs 传统机器学习推荐方案实现难度成本实时性维护适合团队Elasticsearch 推荐⭐低实时简单中小团队、Java后端机器学习推荐⭐⭐⭐⭐⭐高天级/小时级复杂算法团队十二、总结Elasticsearch 完全可以实现一套工业级推荐系统核心能力基于内容相似度推荐基于用户行为个性化推荐基于标签、权重、分类推荐“猜你喜欢”、“相似商品”、“看过还看过”优势✅ 一天上线✅ 零算法门槛✅ 高并发、毫秒级返回✅ 稳定、易维护如果你需要快速上线推荐系统Elasticsearch 是最优选择The End点点关注收藏不迷路