[TOC](Elasticsearch搜索排序实战时间衰减函数(Decay Function)评分优化全解析)The Begin点点关注收藏不迷路前言在内容搜索、电商推荐、新闻资讯、短视频、社区帖子等几乎所有搜索业务中都有一个共同的排序需求在匹配关键词的前提下越新的文档权重越高旧文档逐步降权。但直接按时间倒序排序会忽略相关性而单纯靠关键词评分又会让老旧热帖排在前面。Elasticsearch 提供的衰减函数Decay Function就是专门解决这个问题的神器能实现新内容加权、老内容平滑降权的效果。本文将从原理、流程图、核心参数、实战代码、业务场景全方位讲解带你彻底掌握时间衰减评分让搜索结果更符合用户习惯。一、什么是时间衰减Decay Function1.1 定义衰减函数是 Elasticsearch 内置的评分函数用于根据数值字段如时间、距离、价格让文档评分随着数值偏离中心点而逐渐下降。时间衰减 越新得分越高随时间推移得分平滑降低1.2 适用业务场景新闻/文章最新发布优先电商商品新品加权帖子/短视频新内容权重高招聘/公告最新优先任何“新内容比旧内容好”的业务1.3 时间衰减评分流程可视化用户搜索关键词BM25关键词相关性评分时间衰减函数介入以当前时间now为中心点新文档得分接近1.0 → 高分老文档得分逐步衰减 → 低分最终得分 基础分 × 时间衰减分既相关又最新的结果排最前二、ES 支持的 3 种衰减函数函数曲线特点适用场景gauss高斯衰减平滑缓慢下降最自然时间衰减首选exp指数衰减下降极快需要快速降权linear线性衰减直线下降简单业务结论时间衰减 99% 场景使用 gauss高斯三、高斯时间衰减函数完整语法3.1 基础模板GET/article/_search{query:{function_score:{query:{match:{title:Elasticsearch}},functions:[{gauss:{publish_time:{origin:now,scale:7d,offset:1d,decay:0.5}}}],boost_mode:multiply}}}3.2 四大核心参数必须理解origin中心点时间中心点now代表现在离它越近得分越高scale衰减规模衰减速度7d 7天30d 30天scale 越大衰减越慢offset偏移量保护期在偏移时间内不衰减得满分1d 24小时内不衰减保护新内容不被降权decay衰减系数超过 scale 后的得分倍率默认 0.5越小衰减越快四、参数含义直观解释秒懂origin: now → 以现在为最优时间 offset: 1d → 1天内发布的内容得满分 scale: 7d → 从第1天到第8天开始衰减 decay: 0.5 → 7天后得分变为原来的 0.5时间得分曲线0~1天得分 1.0满分8天得分 0.516天得分 0.25越老越低五、时间衰减实战场景直接复制使用场景 1新闻/文章24小时内不衰减gauss:{publish_time:{origin:now,offset:1d,scale:7d,decay:0.5}}场景 2电商新品7天内加权gauss:{create_time:{origin:now,offset:7d,scale:30d,decay:0.4}}场景 3短视频/帖子快速衰减gauss:{post_time:{origin:now,offset:6h,scale:2d,decay:0.3}}六、时间衰减 关键词匹配 业务评分生产最强模板企业级最常用搜索模板关键词匹配 时间衰减 销量/热度加权GET/shop/_search{query:{function_score:{query:{multi_match:{query:手机,fields:[title^3,desc^1],type:best_fields,tie_breaker:0.3}},functions:[{gauss:{publish_time:{origin:now,offset:1d,scale:7d,decay:0.5}}},{field_value_factor:{field:sales,modifier:log1p}}],boost_mode:multiply,score_mode:sum}}}七、时间衰减的优势不破坏关键词相关性新内容优先老内容平滑降权不会出现突然掉权、跳跃排序排序自然、符合用户习惯性能极高ES 内置优化八、最佳实践总结时间衰减优先使用gaussoffset设置新内容保护时间scale根据业务热度周期设置必须与function_score一起使用boost_modemultiply是最优组合方式九、总结Elasticsearch 时间衰减函数Decay Function是新内容优先排序的官方最优方案能让搜索结果同时满足关键词相关 发布时间新 排序平滑自然gauss最适合时间衰减originnow以当前时间为最优offset新内容保护期scale衰减速度decay衰减倍率掌握时间衰减你的搜索排序将达到企业级标准。总结时间衰减让新文档得分高、老文档得分平滑下降gauss是时间衰减最常用函数四大参数origin、offset、scale、decay必须在function_score中使用生产最佳实践关键词匹配 时间衰减 业务评分The End点点关注收藏不迷路