Elasticsearch通用查询方案
《通用查询方案(一):开篇与基础概念》
《通用查询方案(二):QueryConditionBuilders 工具类》
《通用查询方案(三):QueryBuilderFactory 组件》
《通用查询方案(四):QueryCondition 使用指南与实战》
文章目录
引言
众所周知,Elasticsearch支持丰富的各类查询,同时Elasticsearch广泛应用于我们日常开发工作中。此时,一个高效、灵活且易于维护的通用查询能力堪称提升程序员体验、保障系统性能的关键所在。本文将尝试深入探索一种通用查询技术方案,旨在提供一种标准化、可扩展的方式来构建查询功能。它通过一系列精心设计的组件和规范,使得开发者能够轻松地创建各种类型的查询条件,并将其转换为Elasticsearch能够理解和执行的查询语句。这种方案的核心优势在于其灵活性,能够适应不同业务场景下的查询需求,无论是简单的单条件查询,还是复杂的多条件逻辑嵌套、组合查询,都能游刃有余地应对。
本篇文章介绍通用方案的整体核心组件基石:词汇表、容器
一、查询条件操作符枚举(OperatorEnum)
这是整个查询体系的 “词汇表”,定义了一系列的预定义的丰富多样的操作符,用于表示不同类型的查询或者逻辑组合操作
1、条件查询类:
EQ:用于精准匹配,像查找特定用户的用户名是否等于某个确切值;
NE:用于精准匹配,像查找特定用户的用户名不等于某个确切值;
GT、GTE、LT、LTE:专注于数值范围比较,例如筛选出价格高于某个阈值的商品;
NOT_IN、IN:把控集合成员关系,判断某个元素是否在指定集合内;
RANGE:灵活处理区间查询;
WILDCARD:借助通配符实现模糊匹配;
CONTAINS:检查字段是否包含特定子串;
EXISTS:聚焦字段是否存在;
NESTED_EQ :嵌套对象等于条件下的查询;
…
2、逻辑组合类:
MUST、MUST_NOT、SHOULD:用于构建复杂多条件逻辑
以上每个枚举成员清晰界定了一种数据筛选规则,为后续查询条件的精准构建奠定基础,同时还支持持续扩展操作符枚举,比如嵌套条件的等于、大于、小于等等;通过使用枚举,我们不仅提高了代码的可读性,还能在编译时进行类型检查,减少错误的发生。
代码如下:
public enum OperatorEnum {
EQ("eq", "等于)"),
GT("gt", "大于"),
GTE("gte", "大于等于"),
LT("lt", "小于"),
LTE("lte", "小于等于"),

最低0.47元/天 解锁文章
1248

被折叠的 条评论
为什么被折叠?



