码农最後的哄擡价格,高级操作:说出一口聚合分析(上?!)


dog.com来源

这就是现在目前这个业界奇怪的地方
面试时手撕tomcat,要你喷出一堆莫名奇妙的api细节
说出不只没说过,甚至没码过的东西

然後进来後做的只有:这个按钮调小点 (´;ω;`)

参考文档

* 聚合分类的四种类型

1. Bucket(桶聚合):按照语法将文档分配到不同的"桶",实现资料分类,最主要的聚合分类
2. Metric(指标聚合):对搜寻出来的资料进行某个栏位或某些统计,类似sql的count,sum,min...
3. Matrix(矩阵聚合):这东西官方直接说可能会被废弃,就不看啦
4. Pipeline(管道聚合):类似lambda将一系列的操作或聚合进行一条线路的变更与分析...开发常用但打完bucket我可能直接觉得之後心情好再补了...

那麽今天打多少是多少,我们直接开始罗~~

1. Bucket Aggregations 参考文档

是的,参考文档点开後旁边有超多的分析法,没一种都学没什麽意义大概了解每种分析功能跟注意事项即可
(英文文档真是读死我了)
特别挑了十个面试可能会被问得出来写写

桶集合基本使用方式

GET /it_help/_search
{
  "size": 0,
  "aggs": {//宣告使用聚合分析
    "name": {//分析出後的栏位名称
      "terms": {//分析方式
        "field": "name" //<=分析参数,terms类似於mysql group by因此选则需要某个栏位进行羣组
      }
    }
  }
}
  1. Auto-interval Date Histogram

    类似Date histogram,但他可以直接指定Bucket将符合的数值返回
    参数:buckets=>返回小於等於该设定数结果
    format=>返回的日期格式
    minimum_interval=>最小间格时间单位
    missing=>如果文档没有该则使用该值
    time_zone=> 时区
    inteval=>(返回参数)最小依据buckets算出的间隔值

  2. Date histogram

    依据日期或日期范围,按间格将资料分类
    参数:min_doc_count=>最少文档技术,少於此数不返回
    extended_bounds=>{min:0,max:100}返回范围内的资料笔数
    missing=>如果文档没有该则使用该值
    format=>返回的日期格式
    time_zone=>时区
    offset=>偏移值
    calendar_interval=>日历间隔
    fixed_interval=>指定固定间格时间单位 ex:2w

  3. Date Range

    针对date类型字段做范围聚合
    参数:to=>起点
    from=>终点

  4. Filter

    filter结果"再"进行聚合

POST /it_help/_search?size=0
{
    "aggs" : {
        "name" : {
            "filter" : { "term": { "type": "java" } },
            "aggs" : {
                "avg_age" : { "avg" : { "field" : "age" } }
            }
        }
    }
}
  1. Filters

    同上,多重过滤聚合,直接给范例


GET it_help/_search
{
  "size": 0,
  "aggs": {
    "name": {
      "filters": {
        "filters": {
          "java": {
            "match": {
              "body": "java"
            }
          },
          "sex": {
            "match": {
              "body": "woman"
            }
          }
        }
      }
    }
  }
}
  1. Histogram:

    依据数值或数值类型范围按固定间隔将资料分类
    参数:interval=>间隔值
    min_doc_count=>最少文档技术,少於此数不返回
    extended_bounds=>{min:0,max:100}返回范围内的资料笔数
    missing=>如果文档没有该则使用该值
    keyed=>变更返回格式,将此key返回

  2. Range

    依据语法自定义一组范围,每个范围代表一个Bucket 直接看范例,这样会有三个桶
    参数:to=>起点
    from=>终点

GET /product/_search
{
  "aggs": {
    "price_ranges": {
      "range": {
        "field": "price",
        "ranges": [
          {
            "to": 100
          },
          {
            "from": 100,
            "to": 200
          },
          {
            "from": 200
          }
        ]
      }
    }
  }
}
  1. Rare Terms :

    依据某个字段,将资料进行羣组分类(依据结果数升序排列),如同sql=>group by
    参数:max_doc_count=>最多统计上限,最大值100
    precision=>精度值设定预设0.01
    include=>集合必须包含的术语
    exclude=>集合必须排除的术语
    missing=>如果文档没有该则使用该值

  2. Terms : 依据某个字段,将资料进行羣组分类(依据结果数降序排列),如同sql=>group by

我的老天,写到这已经精疲力竭了
觉得写30天仍旧不够....明天再来写写Metric聚合分析好了...
不然感觉根本没完成
果然工程师这职业不好干呀,光是打出来的东西就常常跟自己过不去了


<<:  《Day 30》【硬体测试】Sun X4170 M2记忆体的障碍排除

>>:  [Day30] 第三十课 Azure学习建议与深入浅出Azure常用服务小结

DAY14支持向量机演算法(续三)

昨天介绍完SMO算法第三步,今天就要来写这个方法第四步, 昨天我们得到aj,接下来要使用aj来更新a...

day27-认识一些不太熟的伪类选择器(上)

安安,今天来讲点伪类选择器,之前的Jquery里面与前几日文章有写了一小部分,不过希望能把一些集中统...

拥抱「资料结构」的「演算法」(30) - 完赛心得

前言 耶呼~~~ 终於 30 天了!喔耶!因为参加铁人赛瘦了 2 公斤,因为写文章实在太烧脑啦XDD...

堆积排序法(Heap Sort)笔记

记录学习内容。看网路上大大们的文章和影片,做些纪录。 以下内容大多来自网路上大大们的文章。 还不了解...

[Day29] RSI指标

今天做的是RSI指标,他是用一个公式去测量过去一段周期内的涨跌强弱,然後用0~100的数据来表示,越...