高级查询中的自定义查询方法(匹配查询,分页查询,排序查询等等查询方法)

高级查询

我们的这个查询方法有很多种,有bool查询,match查询,common查询等等,看我们要用哪种类型的查询。

高级查询中的自定义查询方法(匹配查询,分页查询,排序查询等等查询方法)

高级查询中的自定义查询方法(匹配查询,分页查询,排序查询等等查询方法)
查询结果:
高级查询中的自定义查询方法(匹配查询,分页查询,排序查询等等查询方法)

以上就是基本查询方法,使用QueryBuilders方法完成各种查询方法

自定义查询方法

高级查询中的自定义查询方法(匹配查询,分页查询,排序查询等等查询方法)
我们可以使用下面的这个方法查询它,并且规定查第几页,每页查多少条(page是你要查的页码是多少,size是每页查多少条数据,你输入这两个参数后,系统会自动把所有数据按每页2条排好,然后再让你去查你想要查的页码),withPageable是分页的意思,但是PageRequest.of是怎么来的呢?

高级查询中的自定义查询方法(匹配查询,分页查询,排序查询等等查询方法)
可以看到PageRequest是一个静态方法,可以直接调用,而且传入两个参数就可以用了
高级查询中的自定义查询方法(匹配查询,分页查询,排序查询等等查询方法)
要注意的是,下面这个方法虽然也是可以用,和上面的功能一样,但是这个方法已经过时了,而且有一定的不安全性,所以不推荐使用这个
高级查询中的自定义查询方法(匹配查询,分页查询,排序查询等等查询方法)
查询结果如下,但是看起来好像不对,我们要查的是第二页,实际上查到了第三页的如下结果,这是怎么回事呢?原来是结果集是按照第0,1,2,3页这样的排序进行排序,类似于数组那样,所以我们输入查询第2页,实际上已经是查询到第3页了。
高级查询中的自定义查询方法(匹配查询,分页查询,排序查询等等查询方法)

排序查询

如果我们要让页面结果根据升序还是降序的形式进行排行的话,我们应该怎么做,首先我们把上面的分页条件那里注释掉,然后使用withSort这个排序方法,SortBuilders这个参数是怎么来的呢?我们可以看看下面第二第三张图。
高级查询中的自定义查询方法(匹配查询,分页查询,排序查询等等查询方法)
可以进去NativeSearchQueryBuilder看看withSort的参数SortBuilder这个方法
高级查询中的自定义查询方法(匹配查询,分页查询,排序查询等等查询方法)

高级查询中的自定义查询方法(匹配查询,分页查询,排序查询等等查询方法)
可以看到,结果为降序了。
高级查询中的自定义查询方法(匹配查询,分页查询,排序查询等等查询方法)