//闭区间查询
QueryBuilder qb1 = QueryBuilders.rangeQuery("${fieldName}").from(${fieldValue1}).to(${fieldValue2});
//开区间查询
QueryBuilder qb1 = QueryBuilders.rangeQuery("${fieldName}").from(${fieldValue1}, false).to(${fieldValue2}, false);
//大于
QueryBuilder qb1 = QueryBuilders.rangeQuery("${fieldName}").gt(${fieldValue});
//大于等于
QueryBuilder qb1 = QueryBuilders.rangeQuery("${fieldName}").gte(${fieldValue});
//小于
QueryBuilder qb1 = QueryBuilders.rangeQuery("${fieldName}").lt(${fieldValue});
//小于等于
QueryBuilder qb1 = QueryBuilders.rangeQuery("${fieldName}").lte(${fieldValue});
时间范围查询
@Test
void testQueryRangeTime() {
PageRequest pageable = PageRequest.of(0, 10);
NativeSearchQueryBuilder builder = new NativeSearchQueryBuilder();
RangeQueryBuilder queryBuilder = QueryBuilders.rangeQuery("createTime")
.format("yyyy-MM-dd HH:mm:ss")
.timeZone("GMT+8")
.gte("2022-02-11 07:09:13")
.lte("2022-02-11 07:55:40")
.includeLower(true).includeUpper(true);
NativeSearchQuery searchQuery = builder.withPageable(pageable)
.withQuery(queryBuilder)
.build();
SearchHits<TbStory> search = elasticsearchRestTemplate.search(searchQuery, TbStory.class);
List<SearchHit<TbStory>> searchHits = search.getSearchHits();
for (SearchHit<TbStory> searchHit : searchHits) {
TbStory tbStory = searchHit.getContent();
System.out.println("========================================================");
System.out.println(tbStory);
}
}
// 增加价格区间的检索条件
if (searchRequest.getMinPrice() != null) {
queryBuilder.must(QueryBuilders.rangeQuery(avagePriceStr)
.from(searchRequest.getMinPrice().toString()).includeLower(true)
.includeUpper(true));
}
if (searchRequest.getMaxPrice() != null) {
queryBuilder.must(QueryBuilders.rangeQuery(avagePriceStr)
.to(searchRequest.getMaxPrice().add(new BigDecimal(1)).toString())
.includeUpper(false));
}