1. 程式人生 > >Percentile Ranks Aggregation

Percentile Ranks Aggregation

沒有 .html ron 跟蹤 數量級 d參數 腳本語言 ide guid

Percentile Ranks Aggregation

  一個multi-value指標聚合,它通過從聚合文檔中提取數值來計算一個或多個百分比。這些值可以從特定數值字段中提取,也可以由提供的腳本生成。

    註意:請參考百分比(通常)近視值(percentiles are (usually approximate))和壓縮(Compression)以獲得關於近視值的建議和內存使用的百分比排位聚合。

  百分比排位展示那些在某一值之下的觀測值的百分比。例如,假如某一直大於等於被觀測值的95%,則稱其為第95百分位數。

  假設你的數據由網頁加載時間組成。你可能有一個服務協議,95%頁面需要在15ms加載完全,99%頁面在30ms加載完全。

  讓我們看一下代表加載時間的百分位數:

{
    "aggs" : {
        "load_time_outlier" : {
            "percentile_ranks" : {
                "field" : "load_time", 【1】
                "values" : [15, 30]
            }
        }
    }
}

  【1】load_time必須是一個數值字段

  應答看起來像這個樣子:

{
    ...

   "aggregations": {
      "load_time_outlier": {
         "values" : {
            "15": 92,
            "30": 100
         }
      }
   }
}

  從這些信息你可以確定,你已經達到了99%的加載時間目標,但沒有達到95%的加載時間目標。

Script

  百分位數度量支持腳本。例如,假如加載時間是在毫秒級,當我們想指定值在秒級,我們可以使用腳本來實時轉化它們: 

{
    "aggs" : {
        "load_time_outlier" : {
            "percentile_ranks" : {
                "values" : [3, 5],
                "script" : {
                    "lang": "painless",
                    "inline": "doc[‘load_time‘].value / params.timeUnit", 【1】
                    "params" : {
                        "timeUnit" : 1000   【2】
                    }
                }
            }
        }
    }
}

  【1】field參數被一個script參數替代,使用腳本生成計算百分位數的值。

  【2】腳本支持參數化輸入,就像其它任何腳本一樣

  通過painless腳本語言和無腳本參數將script參數翻譯為一個inline腳本。要使用文件腳本,使用以下語法:

{
    "aggs" : {
        "load_time_outlier" : {
            "percentile_ranks" : {
                "values" : [3, 5],
                "script" : {
                    "file": "my_script",
                    "params" : {
                        "timeUnit" : 1000
                    }
                }
            }
        }
    }
}

  TIP:索引腳本通過id參數替代file參數

HDR Histogram

  警告:該功能是實驗性的,並且在將來的版本中可能被修改或者完全移除。Elastic采用最大努力來解決任何問題,但是試驗功能不受SLA官方GA功能的支持。

  HDR Histogram(高動態範圍柱狀圖)是一種替代實現,在計算延遲測量的百分比數量級時可能很有用,因為它比t-digest實現更快,同時占用更大的內存空間。該實現維持固定的較差的百分比錯誤(指定為有效數字的數量)。這意味著如果在柱狀圖中設置3位有效數字的數據被記錄在1微妙至1小時(3600,000,000微妙)之間,它將保持從1微妙值增加到為最大跟蹤值(1小時)保留1毫秒和3.6分鐘(或更好)分辨率。

  HDR Histogram可以通過在request中指定method參數來使用:

{
    "aggs" : {
        "load_time_outlier" : {
            "percentile_ranks" : {
                "field" : "load_time",
                "values" : [15, 30],
                "hdr": { 【1】
                  "number_of_significant_value_digits" : 3 【2】
                }
            }
        }
    }
}

  【1】hdr對象表示應該使用HRD Histogram來計算百分位數,並且可以在對象內部指定該算法的具體設置。

  【2】number_of_significant_value_digits表示以有效數字值表示柱狀圖的分辨率。

  HDR Histogram僅僅支持絕對值,假如傳遞的是一個相對值則將錯誤。假如值範圍不知道,使用HDR Histogram也不是一個好的主意,因為它將導致高內存使用。

Missing value

  missing參數定義該如何處理缺省值的文檔。默認情況下,他們將被忽略,但是假如他們已經有一個值了,它也可能被處理。

{
    "aggs" : {
        "grade_ranks" : {
            "percentile_ranks" : {
                "field" : "grade",
                "missing": 10 【1】
            }
        }
    }
}

  【1】在grade字段中沒有值的文檔將和有值10的文檔放入相同的bucket中。

原文地址:https://www.elastic.co/guide/en/elasticsearch/reference/5.0/search-aggregations-metrics-percentile-rank-aggregation.html

Percentile Ranks Aggregation