【Elasticsearch】function_score与rescore

它们俩都是用来"**干涉评分**"的,但**工作阶段不同、性能开销不同、能做的事也不同**。一句话总结:

> **function_score** 在 **第一次算分** 时就动手脚;

> **rescore** 在 **拿到 Top-N 结果后** 再"重新打分"。

下面把"能干嘛"拆开讲。

──────────────────

  1. function_score(查询阶段就改分)

• 时机:每个分片在 **收集命中文档时** 直接算完最终得分;属于 **query 阶段**。

• 性能:对 **全部命中文档** 都生效,数据量大时成本最高。

• 典型用途

  • 按业务权重提升/降低:新品×1.5、广告×0.8

  • 把"销量""点击率"等数值字段线性/对数地融进分数

  • 地理位置衰减:离用户越近分数越高

  • 随机打散:给每个用户返回略有不同的排序

  • 脚本写复杂规则:if-else、正则、调用外部服务(不推荐高并发)

──────────────────

  1. rescore(先粗排,再精排)

• 时机:各分片先用原始查询拿到 **window 内的 Top-K**(默认 10×page_size),然后只在 **这 K 个文档** 上重新算分;属于 **fetch 阶段**。

• 性能:只动少量文档,**比 function_score 轻量**。

• 典型用途

  • 用 **昂贵脚本** 或 **复杂机器学习模型** 给 Top-K 做二次精排

  • 把 **phrase proximity**、**sloppy 查询** 放在 rescore 里,避免对全量文档计算

  • 多轮 rescore:第一轮粗排,第二轮用更复杂的模型微调

  • A/B 测试:只对小窗口做实验,不影响全量

──────────────────

  1. 简单对比

| 维度 | function_score | rescore |

|---------------|--------------------------------|---------------------------------|

| 生效阶段 | query | fetch(先粗排再精排) |

| 处理文档量 | 所有命中文档 | 窗口内的 Top-K(可配置) |

| 性能 | 重 | 轻(窗口小就便宜) |

| 能否用脚本 | 能 | 能 |

| 能否链式 | 只能一个 function_score | 可配多个 rescore 按顺序执行 |

| 典型场景 | 业务加权、数值衰减、随机打散 | 昂贵模型精排、phrase proximity |

──────────────────

  1. 一句话选型

• **想对所有文档一视同仁地改分** → 用 `function_score`

• **只想在"头部结果"上精雕细琢** → 用 `rescore`

相关推荐
K_i13415 小时前
GitOps实战:Helm一键部署ArgoCD
大数据·elasticsearch·搜索引擎
容辞1 天前
Elasticsearch
大数据·elasticsearch·搜索引擎
躺着数星星1 天前
Linux中安装es
linux·elasticsearch·jenkins
Elastic 中国社区官方博客1 天前
AutoOps:简单的 Elasticsearch 集群监控与管理现已支持本地部署
大数据·人工智能·elasticsearch·搜索引擎·云计算·全文检索
Turboex邮件分享2 天前
Syslog日志集成搭建
运维·elasticsearch·集成测试
gb42152872 天前
Spring Boot 2.5集成Elasticsearch(亲测)
spring boot·elasticsearch·jenkins
Elastic 中国社区官方博客2 天前
AutoOps:简化自管理 Elasticsearch 的旅程
大数据·人工智能·elasticsearch·搜索引擎·全文检索
Terio_my2 天前
Elasticsearch 索引创建与文档管理
大数据·elasticsearch·jenkins
Elastic 中国社区官方博客2 天前
Elasticsearch MCP 服务器:与你的 Index 聊天
大数据·服务器·人工智能·elasticsearch·搜索引擎·ai·全文检索
青云交3 天前
Java 大视界 -- Java 大数据在智能安防周界防范系统中的行为分析与预警精度提升(419)
elasticsearch·java 大数据·智能安防周界·flink 实时行为分析·spark mllib异常识别·化工园区安防·yolov5 人体检测