《Elasticsearch通用查询方案(四):QueryCondition 使用指南与实战》

Elasticsearch通用查询方案实战解析

Elasticsearch通用查询方案

《通用查询方案(一):开篇与基础概念》

《通用查询方案(二):QueryConditionBuilders 工具类》

《通用查询方案(三):QueryBuilderFactory 组件》

《通用查询方案(四):QueryCondition 使用指南与实战》



前言

在通用接口查询的舞台上,QueryCondition 是绝对的主角之一,携手 QueryConditionBuilders,为精准数据检索拉开大幕。今天咱们抛开繁文缛节,直击实战要害,深挖那些烧脑又实用的复杂查询案例。


一、QueryCondition 极简指南

QueryCondition 简单说就是装着查询关键要素的 “盒子”。field 指明数据源里要查的字段,像数据库里的 “age” 找特定岁数人群。operator 从丰富枚举挑,EQ 精准配对,数值符管大小,集合符理成员,还有逻辑大咖 MUST 等编排复合规则。operand 跟着 operator 变,单个值或值集合按需上场。isComposite 标记是否复合,有它在,就知道这条件不简单。

二、操作符全解析

(一)EQ(精确匹配)操作符:精准狙击枪

EQ 操作符堪称精准打击的典范,当你决心在茫茫数据海洋中精准定位某一特定值的记录时,它就是你的不二之选。
在图书馆藏书系统里,若要迅速找出 ISBN 号为 “9787568900123” 的那本珍藏书籍

QueryCondition bookCondition = QueryConditionBuilders.create(OperatorEnum.EQ, "isbn", "9787568900123");

(二)GT(大于)与 LT(小于)操作符:数值界的标尺

在学生成绩管理场景中,想快速揪出数学成绩高于 85 分的学霸苗子?

QueryCondition mathScoreCondition = QueryConditionBuilders.create(OperatorEnum.GT, "math_score", 85);

若是要排查语文成绩低于 70 分、急需辅导的同学,把 GT 换成 LT 就行,轻松筛出数值区间两端的数据,为针对性教学策略提供依据。

(三)GTE(大于等于)与 LTE(小于等于)操作符:边界包容大师

以电商商品筛选为例,当你打算盘点价格大于等于 80 元的优质商品时

QueryCondition priceCondition = QueryConditionBuilders.create(OperatorEnum.GTE, "price", 80);

(四)IN 与 NOT_IN 操作符:集合筛选利器

设想在校园社团成员管理系统里,要一次性找出加入了 “文学社”“绘画社” 的多才多艺学生

QueryCondition clubCondition = QueryConditionBuilders.create(OperatorEnum.IN, "club", List.of("文学社", "绘画社"));

NOT_IN 则是反向排除神器,比如排除掉已毕业的学生记录,精准管理集合成员关系。

(五)RANGE 操作符:范围界定艺术家

在气象数据查询时,若要梳理出过去一个月(假设起始日期 startDate 和结束日期 endDate 已妥善准备)内温度在 20 - 30 摄氏度之间的天气记录

QueryCondition temperatureCondition = QueryConditionBuilders.create(OperatorEnum.RANGE, "temperature", new Object[]{
   
   20, true, 30, true});

三、迈向逻辑组合条件:构建复杂框架

当简单操作符单打独斗无法满足业务的刁钻需求时,逻辑组合条件带着 MUST、MUST_NOT、SHOULD 闪亮登场,它们如同乐高积木的拼接指令,组合出千变万化的结构。

想象搭建一个高端商务活动参与者筛选机制:目标锁定年龄在 30 - 45 岁(GTE 和 LTE 携手合作)、拥有特定高级会员资质(EQ 精准匹配会员等级)、无不良信用记录(MUST_NOT 结合信用标识字段)且具备丰富行业经验(工作年限大于 8 年,GT 把关)或者近期在行业内发表过重要见解(如论文发表,SHOULD 关联相关标识字段)的精英人士。

// 年龄范围条件
QueryCondition ageLowCondition = QueryConditionBuilders.create(OperatorEnum.GTE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值