go elasticsearch v7之esapi SearchRequest之聚合产生的json是什么样的

106 篇文章 0 订阅
2 篇文章 0 订阅

1. 术语聚合(Terms Aggregation)
- Go代码示例:
go  复制
req := esapi.SearchRequest{
   Index: []string{"your_index"},
   Aggregations: map[string]interface{}{
      "category_count": map[string]interface{}{
         "terms": map[string]interface{}{
            "field": "category.keyword",
         },
      },
   },
}
 
- 产生的JSON类似(简化形式):
json  复制
{
   "aggs": {
      "category_count": {
         "terms": {
            "field": "category.keyword"
         }
      }
   }
}
 
- 在这个JSON中, aggs (也可以是 aggregations )是聚合操作的关键字, category_count 是自定义的聚合名称,用于在结果中标识这个聚合。 terms 表示术语聚合类型, field 指定了要进行术语聚合的字段为 category.keyword 。
2. 范围聚合(Range Aggregation)
- Go代码示例:
go  复制
req := esapi.SearchRequest{
   Index: []string{"your_index"},
   Aggregations: map[string]interface{}{
      "price_ranges": map[string]interface{}{
         "range": map[string]interface{}{
            "field": "price",
            "ranges": [
               {
                  "from": 0,
                  "to": 100
               },
               {
                  "from": 100,
                  "to": 200
               }
            ]
         }
      }
   },
}
 
- 产生的JSON类似(简化形式):
json  复制
{
   "aggs": {
      "price_ranges": {
         "range": {
            "field": "price",
            "ranges": [
               {
                  "from": 0,
                  "to": 100
               },
               {
                  "from": 100,
                  "to": 200
               }
            ]
         }
      }
   }
}
 
- 这里 price_ranges 是聚合名称, range 表示范围聚合类型, field 指定了要进行范围聚合的字段 price , ranges 定义了具体的范围区间。
3. 平均值聚合(Avg Aggregation)结合其他聚合
- Go代码示例:
go  复制
req := esapi.SearchRequest{
   Index: []string{"your_index"},
   Aggregations: map[string]interface{}{
      "category_stats": map[string]interface{}{
         "terms": map[string]interface{}{
            "field": "category.keyword"
         },
         "aggs": {
            "average_price": {
               "avg": {
                  "field": "price"
               }
            }
         }
      }
   },
}
 
- 产生的JSON类似(简化形式):
json  复制
{
   "aggs": {
      "category_stats": {
         "terms": {
            "field": "category.keyword"
         },
         "aggs": {
            "average_price": {
               "avg": {
                  "field": "price"
               }
            }
         }
      }
   }
}
 
- 在这个例子中,首先进行 category.keyword 字段的术语聚合,然后在每个术语聚合的分组内进行 price 字段的平均值聚合。 category_stats 是外层术语聚合的名称, average_price 是内层平均值聚合的名称。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

leijmdas

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值