查询逻辑:
serialnumber为1232041022或者 1453544213 或者1100422310 并且 appeartime在[1619366427001,1619366553000]之间。数据按照appeartime倒序排列。然后取出0~9号数据(分页0号页码,10个)
即
(serialnumber=‘1232041022’||serialnumber='1453544213 '||serialnumber='1100422310 ') && (appeartime.gte1619366427001,lte1619366553000)
|| &&为bool运算符,使用dsl查询中bool关键字should,must。
java代码实现:
/**
* 查询serialnumber在三个之中的数据 1232041022 1453544213 1100422310
* 查询appeartime在 [1619366427001,1619366553000] 的数据
* 加上分页0,10;
* 加上按时间倒序
*/
@Test
void matchRangePageSort(){
// {"match":{"serialnumber":"1232041022"}}
MatchQueryBuilder serialnumber1 = QueryBuilders.matchQuery("serialnumber", "1232041022");
// {"match":{"serialnumber":"1453544213"}}
MatchQueryBuilder serialnumber2 = QueryBuilders.matchQuery("serialnumber", "1453544213");
// {"match":{"serialnumber":"1100422310"}}
MatchQueryBuilder serialnumber3 = QueryBuilders.matchQuery("serialnumber", "1100422310");
// {"bool":{"should":[]}}
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
List<QueryBuilder> should = boolQueryBuilder.should();
// {"bool":{"should":[{"match":{"serialnumber":"1232041022"}}]}}
should.add(serialnumber1);
// {"bool":{"should":[{"match":{"serialnumber":"1232041022"}},{"match":{"serialnumber":"1453544213"}}]}}
should.add(serialnumber2);
// 条件一
// {"bool":{"should":[{"match":{"serialnumber":"1232041022"}},{"match":{"serialnumber":"1453544213"}},{"match":{"serialnumber":"1100422310"}}]}}
should.add(serialnu