ES 使用 Bucket Sort 对聚合结果分页

这篇具有很好参考价值的文章主要介绍了ES 使用 Bucket Sort 对聚合结果分页。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在 Elasticsearch 中,Bucket Sort 是一种聚合操作,用于对桶(bucket)进行排序。它可以根据指定的字段对聚合结果中的桶进行排序,以便按照特定的顺序呈现数据。

Bucket Sort 和 Top Hits 有相似之处,他们之间的区别是:Bucket 是对聚合分桶的排序和分页,而 Top Hits 是对分桶聚合中每个桶里相关文档的聚合和排序。

Bucket Sort 的语法如下:

{
  "aggs": {
    "aggregation_name": {
      "terms": {
        "field": "字段名"
      },
      "aggs": {
        "sort_field": {
          "bucket_sort": {
            "sort": [
              {
                "字段名": {
                  "order": "排序顺序"
                }
              }
            ]
          }
        }
      }
    }
  }
}

其中,“aggregation_name” 是聚合操作的名称,“字段名” 是要基于其进行排序的字段。您可以选择指定多个排序字段以及每个字段的排序顺序,如 “asc”(升序)或 “desc”(降序)。

下面是一个示例,假设我们有一个名为 “sales” 的索引,其中包含了销售数据,包括产品名称和销售金额。我们想要按照销售金额对产品进行排序,并获取销售金额最高的前 5 个产品。
我们可以使用 Bucket Sort 来实现:

{
  "size": 0,
  "aggs": {
    "top_products": {
      "terms": {
        "field": "product_name",
        "size": 5
      },
      "aggs": {
        "sort_sales_amount": {
          "bucket_sort": {
            "sort": [
              {
                "sales_amount": {
                  "order": "desc"
                }
              }
            ],
            "size": 5
          }
        }
      }
    }
  }
}

在这个例子中,我们首先使用 “terms” 聚合按照 “product_name” 字段进行分桶,并设置 “size” 为 5,以获取前 5 个产品。然后,在每个桶内部,使用 “bucket_sort” 对桶进行排序,根据 “sales_amount” 字段的值进行降序排序。最后,我们设置 “size” 为 5,以获取每个桶内销售金额最高的前 5 个产品。

通过使用 Bucket Sort,我们可以根据指定的字段对聚合结果中的桶进行排序,以获取按照特定顺序排列的数据。这对于获取前 N 个或者按照某个字段进行排序的聚合结果非常有用。文章来源地址https://www.toymoban.com/news/detail-723841.html

到了这里,关于ES 使用 Bucket Sort 对聚合结果分页的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • es 聚合分页

    1, hotkey 索引结构 { \\\"properties\\\": { \\\"id\\\": { \\\"type\\\": \\\"keyword\\\" }, \\\"searchInput\\\": { \\\"type\\\": \\\"keyword\\\" }, \\\"createDate\\\": { \\\"type\\\": \\\"keyword\\\" }, \\\"searchType\\\": { \\\"type\\\": \\\"keyword\\\" } } } 2 TopHitsAggregationBuilder //设置要查询的索引 SearchRequest request = new SearchRequest().indices(\\\"hotkey\\\"); //构建搜索 SearchSourceBuilder sourceBuilder = new

    2024年02月06日
    浏览(32)
  • ES聚合分页(group by分组后分页)

    案例:统计业务应用流量数据

    2024年02月11日
    浏览(44)
  • es多字段聚合,聚合后分页,聚合后having等操作

    es聚合的应用场景是很多,不过,有时候,还会有多个字段聚合,聚合后分页,聚合后having的需求 Elasticsearch 聚合后是不支持分页的 性能角度——聚合分页会在大量的记录中产生性能问题。 正确性角度——聚合的文档计数不准确. 但是,公司的一些要求,要进行分页,大致有两种思路 聚

    2023年04月09日
    浏览(25)
  • 原生语言操作和spring data中RestHighLevelClient操作Elasticsearch,索引,文档的基本操作,es的高级查询.查询结果处理. 数据聚合.相关性系数打分

    ​ Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。Elasticsearch 的实现原理主要分为以下几个步骤,首先用户将数据提交到Elasti

    2024年02月05日
    浏览(59)
  • es使用和常用查询(包含多字段聚合查询,实体类方式保存es)

    1.导入es相关jar包 2.增加es配置 3.读取es相关配置   4.创建es实体类,与es mapping设计一致  5.创建es结构  6.创建类继承 ElasticsearchRepository 实现通过api保存实体类ESData到es  7.保存实体类ESData到es  8.es查询 多字段匹配查询,分组查询,分组后聚合

    2024年02月03日
    浏览(39)
  • SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题

    目录 数据聚合 聚合的分类 ​编辑 DSL实现Bucket聚合 ​编辑  DSL实现Metrics聚合​编辑 RestAPI实现聚合  对接前端接口​编辑  自定义分词器​编辑 Completion suggester查询 Completion suggester查询 酒店数据自动补全 实现酒店搜索框界面输入框的自动补全  数据同步问题分析​编辑 同

    2024年02月16日
    浏览(40)
  • 关于Elasticsearch(es)中使用sql返回结果只有1000条

    es中返回的结果只有1000条,这是默认的,想要返回更多的结果,需要做两步: 1、设置max_result_window的大小 PUT indexName/_settings { “max_result_window”:20000 } max_result_window表示结果的最大数量 但是你这样设置完了之后,查询依旧还是1000条 2、查询的时候加上fetch_size 这表示页面上显

    2024年02月14日
    浏览(30)
  • es 使用 cardinality + collapse做分页去重查询

    1.首先我们来介绍一下cardinality的用法 cardinality 即去重计算,类似sql中 count(distinct),先去重再求和,计算指定field值的种类数。 可以看到,aggregations聚合下,返回了按名字查询去重后的结果数,但是只有去重后的条数,没有具体的数据。 2.接下来我们再看一下collapse的用法

    2024年02月01日
    浏览(31)
  • ElasticSearch(7.8版本)聚合查询使用javaHighLevelRestClient实现(从MySQL聚合查询概念->ES聚合概念及实操)

    申明:本文是在实现ES聚合功能中,将过程中查找的多篇博客文献拼接在一起,参考到的博文全部在标题中附上了原文的超链接,分享出来仅是为了提做一个笔记以防忘记,并给大家提供一个参考。 聚合操作指的是在数据查找基础上对于数据进一步整理筛选行为,聚合操作也

    2023年04月24日
    浏览(45)
  • 补充:es与mysql之间的数据同步 2 使用分页导入的方式把大量数据从mysql导入es

    本片文章只是对之前写的文章的补充, es与mysql之间的数据同步 http://t.csdn.cn/npHt4 补充一: 之前的文章对于交换机、队列、绑定,使用的是@bean, 而这里使用的是纯注解版 在消费方,声明交换机: 补充二: 之前的文章是直接使用es操作数据,新增和修改,这样做不是很合适

    2024年02月12日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包