使用场景

使用es聚合时,有时还需要获取query(或filter) 的相关文档结果(数据)。

比如统计各个地区编码的营业额,得到了聚合的统计结果,还想知道query结果中对应的地区名称,并根据营业额进行排序,

这时可以使用 top_hits。

top_hits属性

top_hits有以下的属性:

    from - 从第几个结果开始获取。size - 每个桶返回的query结果的数量。默认情况下,返回前三个匹配的结果。sort - 根据字段进行排序。默认情况下,按主查询的分数排序。

top_hits的DSL

格式如下:

{"size" : 0,"query" : {  },"aggregations" : {"自己命名的聚合名称" : {"terms" : {"field" : "聚合字段","size" : 10000,"order" : {"_term" : "asc"}},"aggregations" : {"hits" : {"top_hits" : {"sort": [{"排序字段": {"order": "desc"}}],"from" : 0,"size" : 5}},"自己命名的聚合统计的名称" : {"sum" : {"field" : "聚合统计字段"}}}}}
}

示例如下:

{"size" : 0,"query" : {  },"aggregations" : {"agg_area" : {"terms" : {"field" : "area","size" : 10000,"order" : {"_term" : "asc"}},"aggregations" : {"hits" : {"top_hits" : {"sort": [{"amount": {"order": "desc"}}],"from" : 0,"size" : 5}},"area_sum" : {"sum" : {"field" : "amount"}}}}}
} 

top_hits的java代码

java代码格式:

    public static String getTopHitsDSL() {SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.searchSource();AggregationBuilder areaCodeAgg = AggregationBuilders.terms(自己命名的聚合名称).field(聚合字段).order(Terms.Order.aggregation("_term", true)).size(10000).subAggregation(AggregationBuilders.topHits("hits").sort(排序字段).size(5)).subAggregation(AggregationBuilders.sum(自己命名的聚合统计的名称).field(聚合字段));return searchSourceBuilder.query().aggregation(areaCodeAgg).size(0).toString();}

如下所示:

    public static String getTopHitsDSL() {SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.searchSource();AggregationBuilder areaCodeAgg = AggregationBuilders.terms("agg_area").field("area").order(Terms.Order.aggregation("_term", true)).size(10000).subAggregation(AggregationBuilders.topHits("hits").sort("amount").size(5)).subAggregation(AggregationBuilders.sum("area_sum").field("amount"));return searchSourceBuilder.query().aggregation(areaCodeAgg).size(0).toString();}

参考资料:

http://itindex.net/detail/60468-elasticsearch-top-hits

ElastaticSearch----top_hits,es获取聚合的相关文档结果相关推荐

  1. ES系列之原来查看文档数量有这么多姿势

    1.引言 有人可能觉得,查看文档数量不是很简单吗?直接 GET /_cat/count/index_name?v 不就可以了吗. 事实上远不止这么简单,比如嵌套文档的情况等.相信你看了我这篇文章之后你 ...

  2. Spring Gateway聚合Swagger在线文档

    Spring Gateway聚合Swagger在线文档 为什么需要聚合? 如何聚合? 单个服务如何聚合Swagger? 1.添加依赖 2.基础配置类 3.Swagger文档信息装配类 4.微服务添加引 ...

  3. ❤️MVC三层架构及相关文档(建议收藏)❤️

    MVC三层架构 什么是MVC:Model .View.Controller:模型.视图.控制器 Model 业务处理:业务逻辑(Servlet) 数据持久层:CRUD(Dao) View 展示数据 提 ...

  4. notes获取计算机名,在Lotus Notes数据库中获取最近读取的文档(Get recently read document in Lotus Notes Database)...

    在Lotus Notes数据库中获取最近读取的文档(Get recently read document in Lotus Notes Database) 我正在使用LotusScript和Lotus ...

  5. 软件是计算机什么及相关文档的总称,1冯-诺依曼原理的基本思想是什么.doc

    文档介绍: 2.什么是计算机硬件.计算机软件?各由哪几部分组成?它们之间有何联系? 答:人们通常把构成计算机的物理装置称为计算机的硬件,其主要功能是:存放控制计算机运行的程序和数据,对信息进行加工处理 ...

  6. 【Windows 逆向】CheatEngine 工具 ( CheatEngine 简介 | 使用 Lazarus 编译 CE 源码 | CheatEngine 相关文档资料 )

    文章目录 一.CheatEngine 简介 二.使用 Lazarus 编译 CE 源码 三.CheatEngine 相关文档资料 一.CheatEngine 简介 CheatEngine 简称 CE ...

  7. 【Android 逆向】substrate 框架 ( substrate 简介 | substrate 相关文档资料 )

    文章目录 一.substrate 简介 二.substrate 相关文档资料 一.substrate 简介 substrate 官网 : http://www.cydiasubstrate.com s ...

  8. turbo c相关文档

    无意中在网上找到的turbo c 2.0相关文档,有reference guide 和user guide.下载地址见(镜像一 ,镜像二 ,镜像三 ,镜像四 ).这些网站还有很多其他各类软件相关文档, ...

  9. 织梦dedecms 相关文档标签(likearticle)实现关联整站文档

    注意:本教程适用于 DedeCMS V5.7 其他版本楼主未测试 默认情况下,相关文档(likearticle)的关联,在只能调用当前栏目(包括顶级栏目下的下级栏目)的文档,那么我们如何来实现关联网站 ...

最新文章

  1. python怎么做彩票概率_用Python一次性把论文作图与数据处理全部搞定!
  2. 2018.3.6 11周1次课
  3. 二分类神经网络的特征光谱---1-2至1-9
  4. python可以在unix_在python窗口中使用绝对的unix路径
  5. 结队开发之NABCD
  6. promo和promotion
  7. Swift 数组、字典
  8. kangle服务器搭建java_linux下kangle虚拟主机-架设java空间的教程及心得
  9. python一行输出多个数据_Python高效数据分析的8个技巧
  10. 罗格斯的计算机科学,Rutgers的CS「罗格斯大学计算机科学系」
  11. amazon php 空间,如何将PHP图像资源放入Amazon Web Services?
  12. 工程数学(数值分析)第三讲:求解线性代数方程组
  13. 有弹性的 net/http 服务
  14. Java学习笔记——网络编程
  15. flowplayer设置视频logo
  16. 【安卓大作业】Android Studio图书管理系统 听雨轩
  17. 一枚前端UI组件库 KUI for React
  18. 中国电信无线网络服务器,电信免费升级500兆?体验过后发现事情并不简单
  19. execl2010数据有效性验证,保存后丢失问题
  20. 安卓手机远程连接linux系统,电脑(Linux/Windows)使用SSH远程登录安卓(Android)手机实现无线传输和管理文件(图文详解)-Go语言中文社区...

热门文章

  1. 刚体验完RabbitMQ?一文带你SpringBoot+RabbitMQ方式收发消息
  2. 广东移动至2020年数据中心机柜规模将近10万架
  3. 【百人计划】图形4.1 Bloom算法
  4. safari 浏览器 JSON Parse error: Unterminated string
  5. 广西大学oj1042(小西的数据结构作业)
  6. xml的标记、元素和属性
  7. 整合CentOS7安装RabbitMQ的几个方法
  8. pdf转换器在线转换详细教程
  9. 黑苹果EFI引导启动文件,华硕X99 Deluxe+E5-1660v3+蓝宝石 RX 580 8G+macos10.14.x(7)
  10. Leetcode-滑窗/差分数组-995. K 连续位的最小翻转次数