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

Elasticsearch 如何为每个指定标题关键词各返回4条匹配菜谱?

问题原因
  • 配置错误:_source.includes参数用于指定返回结果需要保留的文档字段,你填写的数值4不符合参数格式要求,属于无效配置。
  • 逻辑不符合需求:当前bool.should查询只会召回所有匹配任意关键词的文档,默认按相关性评分排序返回前4条,如果spaghetti相关的菜谱评分更高,就会出现返回结果全部匹配同一个关键词的问题,无法保证每个关键词各返回1条结果。
修正后的查询方案

你可以使用filters聚合结合top_hits子聚合,实现按关键词分组,每组返回1条匹配结果,最终刚好得到4条分别匹配不同关键词的菜谱:

body: {
  "size": 0, // 不需要返回原始查询命中的文档列表,只返回聚合结果
  "aggs": {
    "recipes_by_keyword": {
      "filters": {
        "filters": {
          "eggs": {"match": {"Title": "Eggs"}},
          "apple": {"match": {"Title": "Apple"}},
          "onion": {"match": {"Title": "Onion"}},
          "spaghetti": {"match": {"Title": "spaghetti"}}
        }
      },
      "aggs": {
        "top_1_recipe": {
          "top_hits": {
            "size": 1,
            "_source": ["Title", "steps", "ingredients"] // 替换为你实际需要返回的菜谱字段即可
          }
        }
      }
    }
  }
}
结果获取说明

查询返回后,从aggregations.recipes_by_keyword.buckets下的每个分组里取top_1_recipe.hits.hits[0]即可拿到对应关键词的匹配菜谱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:06:04