You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Elasticsearch recency boost报错:[boosts]存在未知START_OBJECT键如何解决?

错误原因
  • Elasticsearch 官方查询DSL没有顶级boosts参数,你将日期 proximity 加权的逻辑放在了错误的请求层级,导致ES解析请求时无法识别该字段,直接抛出解析异常。
  • 你要实现的「新文档优先加权」需求,需要通过function_score查询内置的衰减函数实现。
修正后的可运行代码
body = {
    "query": {
        "function_score": {
            "query": {
                "multi_match": {
                    "query": "<替换为实际查询关键词>",
                    # 已修正原代码中字段名不匹配问题:你实际的文本字段为text_body,而非body
                    "fields": ["title^3", "text_body"]
                }
            },
            "functions": [
                {
                    "linear": {
                        "dateCreated": {
                            "origin": "now",
                            # 衰减周期可自定义,示例为30天:发布时间距离当前超过30天的文档,日期权重会线性衰减为0
                            "scale": "30d",
                            # 对应你原配置中的factor参数,控制日期加权的权重占比
                            "weight": 8
                        }
                    }
                }
            ],
            # 得分合并模式:原始检索得分 + 日期加权得分相加,可根据需求替换为multiply(相乘)等模式
            "boost_mode": "sum"
        }
    }
}

res = es.search(index="<替换为实际索引名>", body=body)
可选配置调整说明
  • 请提前确认索引mapping中dateCreated字段为date类型,否则衰减函数无法正常识别字段值。
  • 可根据业务场景调整scale参数:比如希望7天内的文档优先,就将scale设置为7d。
  • 可调整boost_mode参数:如果希望日期权重和检索相关度是相乘关系,改为multiply即可。

内容的提问来源于stack exchange,提问作者de1337ed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 03:21:01