24.Elasticsearch索引聚合查询—Bucket聚合-2

  • Post author:
  • Post category:其他




24.1 前置条件的过滤:filter



24.1.1 对filter进行分组聚合:filters

  • 示例:日志系统中,每条日志都是在文本中,包含warning/info等信息
PUT /test-agg-logs/_bulk?refresh
{ "index" : { "_id" : 1 } }
{ "body" : "warning: page could not be rendered" }
{ "index" : { "_id" : 2 } }
{ "body" : "authentication error" }
{ "index" : { "_id" : 3 } }
{ "body" : "warning: connection timed out" }
{ "index" : { "_id" : 4 } }
{ "body" : "info: hello pdai" }
  • 需要对包含不同日志类型的日志进行分组,这就需要filters:
GET /test-agg-logs/_search
{
  "size": 0,
  "aggs" : {
    "messages" : {
      "filters" : {
        "other_bucket_key": "other_messages",
        "filters" : {
          "infos" : { "match" : { "body" : "info" }},
          "warnings" : { "match" : { "body" : "warning" }}
        }
      }
    }
  }
}



24.2 对number类型聚合:Range

  • 基于多桶值源的聚合,使用户能够定义一组范围-每个范围代表一个桶

    • 在聚合过程中,将从每个存储区范围中检查从每个文档中提取的值,并“存储”相关/匹配的文档
GET /test-agg-cars/_search
{
  "size": 0,
  "aggs": {
    "price_ranges": {
      "range": {
        "field": "price",
        "ranges": [
          { "to": 20000 },
          { "from": 20000, "to": 40000 },
          { "from": 40000 }
        ]
      }
    }
  }
}



24.3 对IP类型聚合:IP Range

  • 专用于IP值的范围聚合

  • 返回:



24.4 对日期类型聚合:Date Range

  • 专用于日期值的范围聚合





24.5 对柱状图功能:Histrogram

  • 创建直方图需要指定一个区间,如果要为售价创建一个直方图,可以将间隔设为20,000

    • 这样做将会在每个 $20,000 档创建一个新桶,然后文档会被分到对应的桶中
  • 对于仪表盘来说,希望知道每个售价区间内汽车的销量

    • 还会想知道每个售价区间内汽车所带来的收入,可以通过对每个区间内已售汽车的售价求和得到
  • 可以用 histogram 和一个嵌套的 sum 度量得到想要的答案:
GET /test-agg-cars/_search
{
  "size" : 0,
  "aggs":{
    "price":{
      "histogram":{ 
        "field": "price.keyword",
        "interval": 20000
      },
      "aggs":{
        "revenue": {
          "sum": { 
            "field" : "price"
          }
        } 
      } 
    } 
  } 
}




大数据视频推荐:



腾讯课堂



大数据语音推荐:



ELK7 stack开发运维



企业级大数据技术应用



大数据机器学习案例之推荐系统



自然语言处理



大数据基础



人工智能:深度学习入门到精通