ES查询中的问题

ES中使用 Top Hits 查询分桶聚合结果的每个桶的详细数据

1、使用场景

Top hits(顶部命中)是一个聚合功能,用于在查询结果中返回每个桶(bucket)中顶部N个文档,这对于需要在聚合结果中查看每个桶中的最相关或最高评分文档的情况非常有用。

简单来说,Top Hits就是对聚合结果中相关文档的详细展示,它不同于Post Filter, Post Filter是基于源数据的查询,和Agg没有因果关系,其结果不对Aggs产生任何影响。 Top Hits则是基于Aggs的结果的查询,其受到Aggs结果的影响。

2、语法

Top Hits聚合的语法如下:

{
  "aggs": {
    "aggregation_name": {
      "terms": {
        "field": "字段名"
      },
      "aggs": {
        "top_docs": {
          "top_hits": {
            "size": 数量,
            "sort": [
              {
                "排序字段": {
                  "order": "排序顺序"
                }
              }
            ]
          }
        }
      }
    }
  }
}

其中,“aggregation_name” 是聚合操作的名字,“字段名”是要进行分桶的字段。“数量”是要获取每个桶中的文档数量,可以选择指定多个排序字段以及每个字段的排序顺序。

3、案例

按照商品类型分类聚合,对每个分桶展示相关前10条文档

GET goods/_search
{
  "size": 0,
  "aggs": {
    "tags_bucket": {
      "terms": {
        "field": "type.keyword"
      },
      "aggs": {
        "top_agg": {
          "top_hits": {
            "size": 10,
            "sort": [
              {
                "price": {
                  "order": "desc"
                }
              }
            ],
            "from": 0
          }
        }
      }
    }
  }
}

Optional类中,of()和ofNullable()方法的用法与区别

of(T value): 返回一个携带被指定的value,且该value不能为null;

ofNullable(T value):如果指定的value不为Null,则返回携带有该value的Optional类实例,否则返回一个value值为Null的Optional类实例。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值