通过 elasticsearch-sql 使用 SQL 语句聚合查询 Elasticsearch 获取各种 buckets 桶

Elasticsearch 的 buckets(桶)包含 Histogram、Date Histogram、Range、Date Range、Terms、IPv4 Range、Significant Terms 等;

1.Histogram:

SELECT * FROM INDEX-2017-12 GROUP BY (histogram('alias'='log_date.mthAggs', 'interval'='1', 'field'='log_date.mth'))
{
  "from" : 0,
  "size" : 0,
  "aggregations" : {
    "log_date.mthAggs" : {
      "histogram" : {
        "field" : "log_date.mth",
        "interval" : 1
      }
    }
  }
}
2.Date Histogram:

SELECT * FROM INDEX-2017-12 GROUP BY (date_histogram('format'='yyyy-MM', 'alias'='@timestampAggs', 'interval'='1M', 'field'='@timestamp'))
{
  "from" : 0,
  "size" : 0,
  "aggregations" : {
    "@timestampAggs" : {
      "date_histogram" : {
        "field" : "@timestamp",
        "interval" : "1M",
        "format" : "yyyy-MM"
      }
    }
  }
}
3.Range:

SELECT * FROM INDEX-2017-12 GROUP BY (range(log_date.mth,1,6,7,12))
{
  "from" : 0,
  "size" : 0,
  "aggregations" : {
    "range(log_date.mth,1,6,7,12)" : {
      "range" : {
        "field" : "log_date.mth",
        "ranges" : [ {
          "from" : 1.0,
          "to" : 6.0
        }, {
          "from" : 6.0,
          "to" : 7.0
        }, {
          "from" : 7.0,
          "to" : 12.0
        } ]
      }
    }
  }
}
4.Date Range:

SELECT * FROM INDEX-2017-12 GROUP BY (date_range('format'='yyyy-MM-dd', 'alias'='dateRangeAggs', 'field'='@timestamp','2017-01-01','2017-06-01','now-1M','now-1w','now-2d','now'))
{
  "from" : 0,
  "size" : 0,
  "aggregations" : {
    "dateRangeAggs" : {
      "date_range" : {
        "field" : "@timestamp",
        "ranges" : [ {
          "from" : "2017-01-01",
          "to" : "2017-06-01"
        }, {
          "from" : "2017-06-01",
          "to" : "now-1M"
        }, {
          "from" : "now-1M",
          "to" : "now-1w"
        }, {
          "from" : "now-1w",
          "to" : "now-2d"
        }, {
          "from" : "now-2d",
          "to" : "now"
        } ],
        "format" : "yyyy-MM-dd"
      }
    }
  }
}
5.Terms:

SELECT * FROM INDEX-2017-12 GROUP BY (terms('alias'='methodAggs', 'field'='method', 'size'=6))
{
  "from" : 0,
  "size" : 0,
  "aggregations" : {
    "methodAggs" : {
      "terms" : {
        "field" : "method",
        "size" : 6
      }
    }
  }
}
 6.IPv4 Range:

稍后补充...
7.Significant Terms:

暂时没找到求 Significant Terms 的 SQL 语句,只能用原生 ES 查询语句获取了;

ES 原生查询语句如下:

{
  "size": 0,
  "query": {
    "bool": {
      "must": [
        {
          "query_string": {
            "query": "*",
            "analyze_wildcard": true
          }
        },
        {
          "range": {
            "@timestamp": {
              "gte": 1451297220869,
              "lte": 1514455620869,
              "format": "epoch_millis"
            }
          }
        }
      ],
      "must_not": []
    }
  },
  "_source": {
    "excludes": []
  },
  "aggs": {
    "2": {
      "significant_terms": {
        "field": "log.client.system",
        "size": 4
      }
    }
  }
}
 

 
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值