elasticsearch java 组合查询_Java Elasticsearch bool组合查询

Elasticsearch bool组合查询,通过must(且)和should(或)逻辑运算组合term、terms、range等ES查询子句,实现复杂的查询需求,类似SQL的where子句。

构建bool查询

// 等价SQL: shop_id=100 and status=3 or (price >= 100 and price <= 300)

BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery()

.must(QueryBuilders.termQuery("shop_id", 100)) // 通过must设置term子查询

.must(QueryBuilders.termQuery("status", 3)) // 通过must设置term子查询

.should(QueryBuilders.rangeQuery("price").gte(100).lte(300));// 通过should设置range子查询

bool查询支持多层嵌套,最终组合出复杂的查询条件

创建SearchRequest

Java 所有的ES查询请求都是通过SearchRequest对象进行设置,因此需要实例化SearchRequest对象,设置query参数。

SearchRequest searchRequest = new SearchRequest();

// 通过SearchSourceBuilder构建搜索参数

SearchSourceBuilder builder = new SearchSourceBuilder();

// 设置query参数,绑定前面创建的Query对象

builder.query(boolQueryBuilder);

// 设置SearchRequest搜索参数

searchRequest.source(builder);

执行请求

// 执行ES请求

SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);

提示:如何处理查询结果,请参考 Java ES查询基本写法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值