NativeSearchQueryBuilder多条件查询,会覆盖前面的条件

NativeSearchQueryBuilder builder = new NativeSearchQueryBuilder()
        .withQuery(QueryBuilders.termQuery("flag", 1))
        .withQuery(QueryBuilders.termQuery("focus", 1))
        .withSort(SortBuilders.fieldSort("createTime").order(SortOrder.DESC));

调用了多个withQuery,通过底层的代码可以看出会覆盖前面withQuery,只保留一个withQuery

 

正确的方法:

NativeSearchQueryBuilder builder = new NativeSearchQueryBuilder();        builder.withQuery(QueryBuilders.boolQuery().must(QueryBuilders.termQuery("flag", 1)).must(QueryBuilders.termQuery("focus", 1)));
 builder.withSort(SortBuilders.fieldSort("createTime").order(SortOrder.DESC));
在Spring Boot中实现多条件查询可以使用Elasticsearch的布尔查询来实现。布尔查询有三种类型:must查询、should查询和must_not查询。 1. must查询:表示所有的查询条件都必须满足,相当于逻辑上的AND操作。可以使用`boolQuery.must(QueryBuilders)`方法来添加must查询条件。 2. should查询:表示至少满足一个查询条件,相当于逻辑上的OR操作。可以使用`boolQuery.should(QueryBuilders)`方法来添加should查询条件。 3. must_not查询:表示必须不满足某个查询条件,相当于逻辑上的NOT操作。可以使用`boolQuery.mustNot(QueryBuilders)`方法来添加must_not查询条件。 下面是一个示例代码,演示了如何在Spring Boot中实现多条件查询: ```java import org.elasticsearch.index.query.BoolQueryBuilder; import org.elasticsearch.index.query.QueryBuilders; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate; import org.springframework.data.elasticsearch.core.query.NativeSearchQuery; import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; // ... @Autowired private ElasticsearchRestTemplate elasticsearchRestTemplate; public List<YourEntity> multiConditionQuery(String field1, String field2) { BoolQueryBuilder boolQuery = QueryBuilders.boolQuery(); // 添加must查询条件 boolQuery.must(QueryBuilders.termQuery("field1", field1)); // 添加should查询条件 boolQuery.should(QueryBuilders.termQuery("field2", field2)); // 添加must_not查询条件 boolQuery.mustNot(QueryBuilders.termQuery("field3", "value3")); NativeSearchQuery searchQuery = new NativeSearchQueryBuilder() .withQuery(boolQuery) .build(); return elasticsearchRestTemplate.queryForList(searchQuery, YourEntity.class); } ``` 在上面的示例中,我们使用`BoolQueryBuilder`来构建布尔查询,然后使用`QueryBuilders`类的方法来添加具体的查询条件。最后,我们使用`NativeSearchQueryBuilder`来构建查询请求,并通过`elasticsearchRestTemplate`执行查询。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值