第二阶段 13 · bool 组合查询(AND / OR / NOT)
13 · bool 组合查询AND / OR / NOT阶段第二阶段 / 查询能力ES 查询boolmust / should / must_not / filter | PostgreSQL 对照AND/OR/NOT1. 概念bool是把多个查询条件组合起来的容器几乎所有复杂查询都靠它。它有 4 个子句bool 子句含义算分?SQL 对应must必须满足AND✅ 算分ANDfilter必须满足AND❌ 不算分、可缓存AND纯过滤should应该满足OR✅ 算分ORmust_not必须不满足NOT❌ 不算分NOT/!黄金法则需要相关性排序的条件放must只做过滤的条件放filter更快。2. PostgreSQL 对照SELECT*FROMsalesdataWHEREmaterialThinkPad-X1-- filter/mustANDnet_amount1000-- filterAND(geo_cdAPORgeo_cdNA)-- shouldANDstatusCANCELLED;-- must_not3. ES DSLGET salesdata_idx/_search { query: { bool: { filter: [ { term: { material: ThinkPad-X1 } }, { range: { net_amount: { gte: 1000 } } } ], should: [ { term: { geo_cd: AP } }, { term: { geo_cd: NA } } ], minimum_should_match: 1, must_not: [ { term: { status: CANCELLED } } ] } } }should单独用时minimum_should_match默认 1但当同时存在must/filter时should默认变为「可选加分项」想让它起「OR 过滤」作用务必显式写minimum_should_match: 1。4. Spring Boot 实现ComponentpublicclassDoc13BoolQuery{AutowiredprivateElasticsearchClientelasticsearchClient;publicListMapString,ObjectcomplexSearch(StringindexName,Stringmaterial,doubleminAmount,ListStringgeoCds,StringexcludeStatus)throwsIOException{SearchResponseMaprespelasticsearchClient.search(s-s.index(indexName).query(q-q.bool(b-{// ANDmaterial ?b.filter(f-f.term(t-t.field(material).value(material)));// ANDnet_amount ?b.filter(f-f.range(r-r.field(net_amount).gte(JsonData.of(minAmount))));// ORgeo_cd IN (...) —— 用 should minimum_should_matchfor(Stringgeo:geoCds){b.should(sh-sh.term(t-t.field(geo_cd).value(geo)));}b.minimumShouldMatch(1);// NOTstatus ?b.mustNot(mn-mn.term(t-t.field(status).value(excludeStatus)));returnb;})),Map.class);returnresp.hits().hits().stream().map(Hit::source).filter(Objects::nonNull).collect(Collectors.toList());}}这段就是本项目AbstractEsHepler#query的「进阶版」都用Query.of(q - q.bool(b - { ... return b; }))动态拼条件条件为空就跳过if。对照 MyBatis 的if动态 SQL 来理解最直观。5. 坑与最佳实践should的陷阱和must/filter同用时不写minimum_should_match会变成「可选加分」过滤不生效。想当 OR 用就显式写1。能用filter就别用must纯过滤放filter不算分、可缓存性能显著更好。must_not不算分它只排除不影响相关性。嵌套 bool复杂的(A OR B) AND (C OR D)用 bool 里再套 bool 实现。动态拼条件Java 里用if判空再b.filter(...)避免把空条件塞进去。下一篇14-exists-空值判断.md。

相关新闻

信息系统的五大组成要素

信息系统的五大组成要素

信息系统的五大组成要素是人员、硬件、软件、数据和过程,它们共同协作以实现系统功能和目标。 1. 人员(People) 人员是信息系统中最关键的组成部分,包括最终用户、系统管理员、开发人员等。人员要素涉及系统的设计、开发、维护和…

2026/7/31 17:50:03 阅读更多 →
盘锦高三综合评价报考,家长怎么少走弯路?

盘锦高三综合评价报考,家长怎么少走弯路?

这两年我身边不少盘锦高三家长,一聊到综合评价就有点懵: “听说能多一条路,但到底适不适合我家孩子?” “材料要准备什么,时间节点会不会错过?” “是不是只看成绩,还是还要看活动、奖项、面试&…

2026/7/31 17:49:03 阅读更多 →
南宁五象福朋喜来登-邕城商务差旅优选

南宁五象福朋喜来登-邕城商务差旅优选

经常来南宁五象新区跑业务,试过周边好几家酒店,现在出差基本锁定这家福朋喜来登。对商务人来说,住宿不用追求花里胡哨,省心、方便最重要,聊聊这次入住真实感受。1.位置交通酒店就在五象总部基地这边,跑客户…

2026/7/31 17:49:03 阅读更多 →

最新新闻

TinyViT模型大揭秘:5.4M参数如何实现高效图像分类?tiny_vit_5m_224.dist_in22k_ft_in1k完整指南

TinyViT模型大揭秘:5.4M参数如何实现高效图像分类?tiny_vit_5m_224.dist_in22k_ft_in1k完整指南

TinyViT模型大揭秘:5.4M参数如何实现高效图像分类?tiny_vit_5m_224.dist_in22k_ft_in1k完整指南 【免费下载链接】tiny_vit_5m_224.dist_in22k_ft_in1k 项目地址: https://ai.gitcode.com/hf_mirrors/timm/tiny_vit_5m_224.dist_in22k_ft_in1k T…

2026/7/31 18:21:15 阅读更多 →
抖音批量下载终极指南:5分钟搞定无水印视频,告别手动保存烦恼

抖音批量下载终极指南:5分钟搞定无水印视频,告别手动保存烦恼

抖音批量下载终极指南:5分钟搞定无水印视频,告别手动保存烦恼 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and brow…

2026/7/31 18:21:15 阅读更多 →
C++ 类和对象(下):从构造函数到编译器优化

C++ 类和对象(下):从构造函数到编译器优化

本篇博客将结合一份完整的 C 代码实例(涵盖 Date 类、Stack 类、内部类等),详细剖析类和对象的各个核心知识点,包括构造函数、初始化列表、拷贝控制、运算符重载、static 成员、友元、内部类、匿名对象以及编译器优化等。同时会补…

2026/7/31 18:21:15 阅读更多 →
“采样步数=质量”是最大误区!基于127组消融实验揭示最优步数-质量-时延黄金三角

“采样步数=质量”是最大误区!基于127组消融实验揭示最优步数-质量-时延黄金三角

更多请点击: https://codechina.net 第一章:扩散模型采样步数的本质认知与误区辨析 采样步数(sampling steps)并非单纯控制生成速度的“超参开关”,而是直接决定反向扩散轨迹在隐空间中离散化逼近连续SDE/ODE解的精度…

2026/7/31 18:21:15 阅读更多 →
全栈技术助力城市生命线安全防线构筑

全栈技术助力城市生命线安全防线构筑

城市基础设施的安全运行,直接关系到千万市民的生命财产安全和城市的正常运转。随着城镇化进程持续深入,地下管网老化、极端天气频发、各类风险交织叠加等挑战日益凸显,传统的被动式、碎片化管理模式已难以应对复杂多变的安全形势。在这一背景…

2026/7/31 18:21:15 阅读更多 →
从“打卡式管理”到“意图感知办公”:AI混合办公管理的范式跃迁(含2023-2024全球TOP10案例拆解)

从“打卡式管理”到“意图感知办公”:AI混合办公管理的范式跃迁(含2023-2024全球TOP10案例拆解)

更多请点击: https://kaifayun.com 第一章:从“打卡式管理”到“意图感知办公”:AI混合办公管理的范式跃迁 传统考勤系统依赖固定时间点的签到/签退动作,将员工行为简化为二进制状态(在线/离线、在岗/缺勤&#xff09…

2026/7/31 18:20:14 阅读更多 →

日新闻

物理复制比逻辑复制好在哪?数据库复制原理详解

物理复制比逻辑复制好在哪?数据库复制原理详解

数据库复制是把主库数据同步到备库的机制,分为逻辑复制和物理复制两种。逻辑复制传输的是 SQL 语句或行变更事件,物理复制传输的是存储引擎底层的物理日志。阿里云 PolarDB(云原生数据库)采用物理复制,在同步延迟、数据…

2026/7/31 0:00:34 阅读更多 →
BilibiliDown:3分钟学会B站视频下载的终极指南

BilibiliDown:3分钟学会B站视频下载的终极指南

BilibiliDown:3分钟学会B站视频下载的终极指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/Bilib…

2026/7/31 0:00:34 阅读更多 →
有哪些游戏数据AI平台?游戏行业Data+AI融合方案盘点

有哪些游戏数据AI平台?游戏行业Data+AI融合方案盘点

当前,游戏行业的“DataAI融合”已从概念验证进入价值落地阶段。根据IDC 2025年数据,中国AI游戏云市场规模已达18.6亿元;同时,游戏研发环节AI渗透率高达86%,生成式AI内容普及率超过50%。面对庞大的市场,游戏…

2026/7/31 0:00:34 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/31 1:03:03 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/29 14:34:28 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/31 4:19:39 阅读更多 →

月新闻