【微服务】162:利用Java实现索引库相关的分页、排序和聚合( 二 )
order()方法说明排序方式 。
其可以链式编程不停地添加查询条件 。
再调用search方法完成查询
使用自定义的itemRepository接口调用search()方法 , 同时说明查询条件 , 也就是原生的查询只是说明了下查询条件 。
查询结果测试
文章图片
match匹配“小米手机” , 查询数据有3条 。
在分页的时候就说明了每页显示2条数据 , 所以这里一共有2页数据 。
当前显示的是首页 , 也就是第0页 。
三、原生的聚合
先对聚合做一个简单的回顾:
文章图片
其实无外乎还是那核心4个步骤:
aggs说明这是一个聚合 。
给该聚合自定义一个名称 。
说明聚合类型:桶有自己对应到的各种类型 , 度量也有自己对应的各种类型 , 上述例子中是桶里面的terms类型 。
说明聚合字段:brand 。 也就是根据brand字段划分成多个桶 。
好 , 这是在Elasticsearch中的使用 , 那如何用Java代码来操作它呢?
文章图片
创建构造器
这个和原生的查询一样 , 都是使用该构造器 。
添加聚合
这一段代码就将聚合的三要素都说清楚了 。
聚合名叫什么?叫popularBrand 。
聚合是什么类型?terms()方法也就是terms类型 , 不同的类型在Java中对应不同的方法 。
聚合字段是哪个?field说明是brand字段、
得到聚合结果
使用elasticsearchTemplate查询聚合 , 返回聚合结果 。
结果解析
这段代码就有点复杂了 , 我们做一个对比 。
文章图片
利用kibana响应的是一个json数据 , Java中的这段代码其实也就是对json数据的解析 。
getAggregations() , 聚合是可以嵌套有多个的 , 只不过例子中只写了一个聚合 。
get():根据聚合名找到需要的那个聚合 。
getBuckets():找到对应的桶数据 。 json数据中还有一些其它数据 , 而我们自然需要的也就是buckets数据 。
获取桶中对应的数据 。
说白了Java对聚合的解析其实也就是对json数据的解析过程 , 就算不是聚合 , 其它json数据的解析思路都是一样的 。
最后
行有不得反求诸己 , 我是@刘小爱
一个白天上班晚上学习的95后沪漂 , 不为其它 , 只为学会自律做好自己 , 也愿我的每日打卡能给你带来勇气 , 欢迎点赞关注和评论 。
- 买华为手机的人真的在乎性价比吗?
- 【框架】124:spring框架之切面编程步骤说明
- 高价低配不值得买,vivox90性能超越骁龙8+旗舰
- 为了回归主流,三星煞费苦心,三星手机出镜率越来越高了
- 云服务|目前,电商客服外包托管行业的发展怎么样?
- 今年10月|微软surfacepro9二合一轻薄本图赏
- Windows|如果微软对中国断供Windows,那多少公司会倒闭?
- 大v|提高免疫力是必修课,一款手表如何助你增强健康体魄?
- 微软|小红书笔记内容生态是怎样的?
- javascript|2022第一届中山区“大连银行杯”电商节暨培育发展市场主体服务月正式启动