news 2026/4/23 18:53:15

Elasticsearch布尔查询在检索中的应用:实战案例讲解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Elasticsearch布尔查询在检索中的应用:实战案例讲解

以下是对您提供的博文内容进行深度润色与结构重构后的技术文章。整体遵循“去AI化、强人设、重实战、有节奏”的编辑原则,彻底打破模板式写作惯性,以一位十年 Elasticsearch 架构师 + 开源社区布道者的真实口吻重写全文。语言更凝练、逻辑更自然、案例更贴近一线开发痛点,并强化了「为什么这么用」背后的工程权衡思考,同时删除所有机械标题、总结段与空洞结语,让技术分享像一次深夜的技术对谈。


当你的搜索开始“讲逻辑”:一个老Elasticsearch工程师的布尔查询手记

上周五晚上十一点,我收到一条钉钉消息:“线上商品搜索突然变慢,QPS掉了一半,用户投诉搜不到新款AirPods……”
我连上Kibana看了眼慢查询日志——问题出在一个看似无害的DSL上:

{ "query": { "bool": { "must": [ { "match": { "title": "airpods" } }, { "range": { "price": { "gte": 150 } } } ], "must_not": [ { "match": { "description": "refurbished" } } ] } } }

没错,就是它。must_not里那个match,在千万级商品索引中触发了全段扫描,Lucene直接放弃缓存优化路径,每个分片都扛着正则级开销跑全文倒排。而真正该被排除的,不过是几个固定字符串:“refurbished”、“used”、“open-box”。

这不是语法错误,是语义误判——把“过滤”当成了“打分”,把“确定性排除”交给了“概率匹配”。

这件事让我决定写下这篇文字。不讲定义,不列文档,只说我们每天在API网关后、在日志告警里、在A/B测试报表中,真正踩过的坑、调过的参、改过的DSL


must不是“必须”,而是“参与排序的必须”

很多人第一次写bool,会下意识把所有条件塞进must:品牌、价格、状态、分类……觉得“都得满足,当然放must”。

错。

must的本质,是Lucene BooleanQuery 中的 MUST 子句,但它带一个隐藏属性:每个子句都会喂给TF-IDF或BM25打分器。哪怕你只加了一个term: { "status": "published" },ES也会为这个字段计算词频、逆文档频率、字段长度归一化——而这些计算,对一个只有两个值( <

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 18:36:34

MedGemma 1.5在基层医疗的应用:社区诊所低成本部署智能分诊助手

MedGemma 1.5在基层医疗的应用&#xff1a;社区诊所低成本部署智能分诊助手 1. 为什么社区诊所需要一个“不联网”的医疗助手&#xff1f; 你有没有见过这样的场景&#xff1a; 早上八点&#xff0c;社区卫生服务中心门口已经排起长队。一位阿姨拿着化验单反复问护士&#xf…

作者头像 李华
网站建设 2026/4/22 20:48:48

三步打造AI语音识别工具:智能字幕生成的完整探索指南

三步打造AI语音识别工具&#xff1a;智能字幕生成的完整探索指南 【免费下载链接】Whisper-WebUI 项目地址: https://gitcode.com/gh_mirrors/wh/Whisper-WebUI 在数字化内容爆炸的时代&#xff0c;视频创作者、教育工作者和办公人士常常面临一个共同挑战&#xff1a;如…

作者头像 李华
网站建设 2026/4/21 13:40:09

告别手动抢单,让智能预约系统为你锁定茅台抢购先机

告别手动抢单&#xff0c;让智能预约系统为你锁定茅台抢购先机 【免费下载链接】campus-imaotai i茅台app自动预约&#xff0c;每日自动预约&#xff0c;支持docker一键部署 项目地址: https://gitcode.com/GitHub_Trending/ca/campus-imaotai 当你第N次因为会议错过茅台…

作者头像 李华
网站建设 2026/4/18 19:51:39

源图像和目标图像区别?新手最容易混淆的问题

源图像和目标图像区别&#xff1f;新手最容易混淆的问题 你是不是也遇到过这样的情况&#xff1a;上传了两张人脸照片&#xff0c;点击“开始融合”&#xff0c;结果生成的图片完全不是预期效果&#xff1f;要么脸没换成功&#xff0c;要么五官扭曲变形&#xff0c;要么肤色不协…

作者头像 李华
网站建设 2026/4/18 21:06:01

显式类型转换与隐式类型转换

在C中&#xff0c;类型转换是将一个类型的值转换为另一个类型的操作&#xff0c;分为隐式类型转换&#xff08;编译器自动完成&#xff09;和显式类型转换&#xff08;程序员主动指定&#xff09;两类。 一、隐式类型转换&#xff08;自动转换&#xff09; 编译器在特定场景下自…

作者头像 李华