zoukankan      html  css  js  c++  java
  • 【ES】学习9-聚合2

    按时间统计:date_histogram

    GET /cars/transactions/_search
    {
       "size" : 0,
       "aggs": {
          "sales": {
             "date_histogram": {
                "field": "sold",
                "interval": "month", 
                "format": "yyyy-MM-dd" 
             }
          }
       }
    }

    注意,这种写法在数字字段没有问题,但是在文本字段使用之前必须先把对应字段的fielddata设为true才可以。否则会报错:

    "caused_by" : {
          "type" : "illegal_argument_exception",
          "reason" : "Fielddata is disabled on text fields by default. Set fielddata=true on [name] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory."
        }

    注意,设置了fielddata会消耗大量内存。

    返回空buckets:设置参数 min_doc_count

    限制返回时间范围:设置参数 extended_bounds

    GET /cars/transactions/_search
    {
       "size" : 0,
       "aggs": {
          "sales": {
             "date_histogram": {
                "field": "sold",
                "interval": "month",
                "format": "yyyy-MM-dd",
                "min_doc_count" : 0, 
                "extended_bounds" : { 
                    "min" : "2014-01-01",
                    "max" : "2014-12-31"
                }
             }
          }
       }
    }

    扩展例子:

    GET /cars/transactions/_search
    {
       "size" : 0,
       "aggs": {
          "sales": {
             "date_histogram": {
                "field": "sold",
                "interval": "quarter", 
                "format": "yyyy-MM-dd",
                "min_doc_count" : 0,
                "extended_bounds" : {
                    "min" : "2014-01-01",
                    "max" : "2014-12-31"
                }
             },
             "aggs": {
                "per_make_sum": {
                   "terms": {
                      "field": "make"
                   },
                   "aggs": {
                      "sum_price": {
                         "sum": { "field": "price" } 
                      }
                   }
                },
                "total_sum": {
                   "sum": { "field": "price" } 
                }
             }
          }
       }
    }

    分析一下上面的例子:

    先是一个聚合,名为sales,类型是date_histogram,会根据时间生成桶

    再看sales桶里,嵌套了一个聚合,包括per_make_sum和total_sum,

          total_sum:用到了sum,这是一个指标,不会产生新的桶,会生成数值。

          per_make_sum:用到了terms,会根据make字段划分子桶

                    在per_make_sum桶中,嵌套了sum_price聚合,也是一个sum指标,不会产生新桶。

    上面的层级结构表示了桶的嵌套关系。关键在于区分哪些是桶,哪些是指标。

  • 相关阅读:
    Android fill_parent和wrap_content分析
    美亚退保
    房子
    回家看
    Interface小例子
    做网页 推荐
    转发;Dota英文名
    【转】meta标签中的http-equiv属性使用介绍
    【转】php 操作数组(合并,拆分,追加,查找,删除等)
    【转】服务器.htaccess 详解以及 .htaccess 参数说明
  • 原文地址:https://www.cnblogs.com/dplearning/p/7018656.html
Copyright © 2011-2022 走看看