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

如何获取Elasticsearch中无匹配结果的搜索词列表及使用统计?

Elasticsearch无结果搜索词汇统计方案

Elasticsearch不会自动记录无结果返回的搜索词汇及次数,这类数据需要你手动追踪实现,以下是几种可行方案:

1. 应用层直接拦截统计

在业务代码里,每次执行ES搜索请求后,判断返回结果中hits.total.value是否为0:

  • 若为0,将当前实际搜索的词汇(注意要和发送给ES的查询词一致,包括经过分析器处理后的内容)写入专门的统计索引或数据库
  • 后续直接查询统计索引,通过聚合操作就能得到各无结果词汇的搜索次数

比如你提供的示例查询,执行后检查命中数为0时,就记录TermThatReturnsNoRecords的搜索行为。

2. 用搜索模板+脚本实现自动记录

创建ES搜索模板,在模板中嵌入脚本逻辑:

  • 执行查询后通过脚本判断命中数
  • 若命中数为0,调用_update_by_query直接写入统计索引,完成自动记录

这种方式需要开启ES脚本支持,会增加ES节点负载,适合低流量场景。

3. 基于日志的间接统计

调整ES日志配置,让日志输出完整的查询请求内容,再通过日志收集工具(如Filebeat)将日志导入到另一个ES索引:

  • 解析日志中的查询内容和返回的命中数
  • 筛选出命中数为0的记录,聚合统计对应词汇的搜索次数

这种方式无需修改业务代码,但需要搭建额外的日志处理链路,日志解析成本较高。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 20:22:12