バケット相関集約

設定された兄弟マルチバケット集約に対して相関関数を実行する兄弟パイプライン集約です。

パラメータ

  • buckets_path
  • (必須、文字列) 相関させる値のセットを含むバケットへのパス。構文については、buckets_path 構文を参照してください。
  • function
  • (必須、オブジェクト) 実行する相関関数。
    function のプロパティ
    • count_correlation
    • (必須*、オブジェクト) カウント相関を計算するための設定。この関数は、用語の値と特定のメトリックの相関を決定するために設計されています。したがって、次の要件を満たす必要があります。
      • buckets_path_count メトリックを指す必要があります。
      • すべての bucket_path カウント値の合計は indicator.doc_count 以下でなければなりません。
      • この関数を利用する際には、必要な indicator 値を収集するための初期計算が必要です。
        count_correlation のプロパティ
      • indicator
      • (必須、オブジェクト) 設定された bucket_path 値と相関させる指標。
        indicator のプロパティ
      • doc_count
      • (必須、整数) 最初に expectations を作成したドキュメントの総数。これは、用語の値が相関するデータの元のスーパーセットである buckets_path のすべての値の合計以上である必要があります。
      • expectations
      • (必須、配列) 設定された bucket_path 値と相関させるための数値の配列。この値の長さは、常に bucket_path によって返されるバケットの数と等しくなければなりません。
      • fractions
      • (オプション、配列) 平均化および分散計算に使用する分数の配列。これは、事前計算されたデータと buckets_path に既知のギャップがある場合に使用するべきです。提供された場合、fractions の長さは expectations と等しくなければなりません。

構文

単独での bucket_correlation 集約は次のようになります:

Js

  1. {
  2. "bucket_correlation": {
  3. "buckets_path": "range_values>_count",
  4. "function": {
  5. "count_correlation": {
  6. "indicator": {
  7. "expectations": [...],
  8. "doc_count": 10000
  9. }
  10. }
  11. }
  12. }
  13. }
相関させる値を含むバケット。
相関関数の定義。

次のスニペットは、フィールド version の個々の用語を latency メトリックと相関させます。事前計算された latency 指標値は、パーセンタイル集約を利用して行われたため、表示されていません。

この例では、10s パーセンタイルのみを使用しています。

Python

  1. resp = client.search(
  2. index="correlate_latency",
  3. size="0",
  4. filter_path="aggregations",
  5. aggs={
  6. "buckets": {
  7. "terms": {
  8. "field": "version",
  9. "size": 2
  10. },
  11. "aggs": {
  12. "latency_ranges": {
  13. "range": {
  14. "field": "latency",
  15. "ranges": [
  16. {
  17. "to": 0
  18. },
  19. {
  20. "from": 0,
  21. "to": 105
  22. },
  23. {
  24. "from": 105,
  25. "to": 225
  26. },
  27. {
  28. "from": 225,
  29. "to": 445
  30. },
  31. {
  32. "from": 445,
  33. "to": 665
  34. },
  35. {
  36. "from": 665,
  37. "to": 885
  38. },
  39. {
  40. "from": 885,
  41. "to": 1115
  42. },
  43. {
  44. "from": 1115,
  45. "to": 1335
  46. },
  47. {
  48. "from": 1335,
  49. "to": 1555
  50. },
  51. {
  52. "from": 1555,
  53. "to": 1775
  54. },
  55. {
  56. "from": 1775
  57. }
  58. ]
  59. }
  60. },
  61. "bucket_correlation": {
  62. "bucket_correlation": {
  63. "buckets_path": "latency_ranges>_count",
  64. "function": {
  65. "count_correlation": {
  66. "indicator": {
  67. "expectations": [
  68. 0,
  69. 52.5,
  70. 165,
  71. 335,
  72. 555,
  73. 775,
  74. 1000,
  75. 1225,
  76. 1445,
  77. 1665,
  78. 1775
  79. ],
  80. "doc_count": 200
  81. }
  82. }
  83. }
  84. }
  85. }
  86. }
  87. }
  88. },
  89. )
  90. print(resp)

Js

  1. const response = await client.search({
  2. index: "correlate_latency",
  3. size: 0,
  4. filter_path: "aggregations",
  5. aggs: {
  6. buckets: {
  7. terms: {
  8. field: "version",
  9. size: 2,
  10. },
  11. aggs: {
  12. latency_ranges: {
  13. range: {
  14. field: "latency",
  15. ranges: [
  16. {
  17. to: 0,
  18. },
  19. {
  20. from: 0,
  21. to: 105,
  22. },
  23. {
  24. from: 105,
  25. to: 225,
  26. },
  27. {
  28. from: 225,
  29. to: 445,
  30. },
  31. {
  32. from: 445,
  33. to: 665,
  34. },
  35. {
  36. from: 665,
  37. to: 885,
  38. },
  39. {
  40. from: 885,
  41. to: 1115,
  42. },
  43. {
  44. from: 1115,
  45. to: 1335,
  46. },
  47. {
  48. from: 1335,
  49. to: 1555,
  50. },
  51. {
  52. from: 1555,
  53. to: 1775,
  54. },
  55. {
  56. from: 1775,
  57. },
  58. ],
  59. },
  60. },
  61. bucket_correlation: {
  62. bucket_correlation: {
  63. buckets_path: "latency_ranges>_count",
  64. function: {
  65. count_correlation: {
  66. indicator: {
  67. expectations: [
  68. 0, 52.5, 165, 335, 555, 775, 1000, 1225, 1445, 1665, 1775,
  69. ],
  70. doc_count: 200,
  71. },
  72. },
  73. },
  74. },
  75. },
  76. },
  77. },
  78. },
  79. });
  80. console.log(response);

コンソール

  1. POST correlate_latency/_search?size=0&filter_path=aggregations
  2. {
  3. "aggs": {
  4. "buckets": {
  5. "terms": {
  6. "field": "version",
  7. "size": 2
  8. },
  9. "aggs": {
  10. "latency_ranges": {
  11. "range": {
  12. "field": "latency",
  13. "ranges": [
  14. { "to": 0.0 },
  15. { "from": 0, "to": 105 },
  16. { "from": 105, "to": 225 },
  17. { "from": 225, "to": 445 },
  18. { "from": 445, "to": 665 },
  19. { "from": 665, "to": 885 },
  20. { "from": 885, "to": 1115 },
  21. { "from": 1115, "to": 1335 },
  22. { "from": 1335, "to": 1555 },
  23. { "from": 1555, "to": 1775 },
  24. { "from": 1775 }
  25. ]
  26. }
  27. },
  28. "bucket_correlation": {
  29. "bucket_correlation": {
  30. "buckets_path": "latency_ranges>_count",
  31. "function": {
  32. "count_correlation": {
  33. "indicator": {
  34. "expectations": [0, 52.5, 165, 335, 555, 775, 1000, 1225, 1445, 1665, 1775],
  35. "doc_count": 200
  36. }
  37. }
  38. }
  39. }
  40. }
  41. }
  42. }
  43. }
  44. }
範囲集約とバケット相関集約を含む用語バケット。両方とも、用語の値とレイテンシの相関を計算するために使用されます。
レイテンシフィールドの範囲集約。範囲はレイテンシフィールドのパーセンタイルを参照して作成されました。
各範囲内の用語値の数と、以前に計算された指標値との相関を計算するバケット相関集約。

次のような応答があるかもしれません:

コンソール-結果

  1. {
  2. "aggregations" : {
  3. "buckets" : {
  4. "doc_count_error_upper_bound" : 0,
  5. "sum_other_doc_count" : 0,
  6. "buckets" : [
  7. {
  8. "key" : "1.0",
  9. "doc_count" : 100,
  10. "latency_ranges" : {
  11. "buckets" : [
  12. {
  13. "key" : "*-0.0",
  14. "to" : 0.0,
  15. "doc_count" : 0
  16. },
  17. {
  18. "key" : "0.0-105.0",
  19. "from" : 0.0,
  20. "to" : 105.0,
  21. "doc_count" : 1
  22. },
  23. {
  24. "key" : "105.0-225.0",
  25. "from" : 105.0,
  26. "to" : 225.0,
  27. "doc_count" : 9
  28. },
  29. {
  30. "key" : "225.0-445.0",
  31. "from" : 225.0,
  32. "to" : 445.0,
  33. "doc_count" : 0
  34. },
  35. {
  36. "key" : "445.0-665.0",
  37. "from" : 445.0,
  38. "to" : 665.0,
  39. "doc_count" : 0
  40. },
  41. {
  42. "key" : "665.0-885.0",
  43. "from" : 665.0,
  44. "to" : 885.0,
  45. "doc_count" : 0
  46. },
  47. {
  48. "key" : "885.0-1115.0",
  49. "from" : 885.0,
  50. "to" : 1115.0,
  51. "doc_count" : 10
  52. },
  53. {
  54. "key" : "1115.0-1335.0",
  55. "from" : 1115.0,
  56. "to" : 1335.0,
  57. "doc_count" : 20
  58. },
  59. {
  60. "key" : "1335.0-1555.0",
  61. "from" : 1335.0,
  62. "to" : 1555.0,
  63. "doc_count" : 20
  64. },
  65. {
  66. "key" : "1555.0-1775.0",
  67. "from" : 1555.0,
  68. "to" : 1775.0,
  69. "doc_count" : 20
  70. },
  71. {
  72. "key" : "1775.0-*",
  73. "from" : 1775.0,
  74. "doc_count" : 20
  75. }
  76. ]
  77. },
  78. "bucket_correlation" : {
  79. "value" : 0.8402398981360937
  80. }
  81. },
  82. {
  83. "key" : "2.0",
  84. "doc_count" : 100,
  85. "latency_ranges" : {
  86. "buckets" : [
  87. {
  88. "key" : "*-0.0",
  89. "to" : 0.0,
  90. "doc_count" : 0
  91. },
  92. {
  93. "key" : "0.0-105.0",
  94. "from" : 0.0,
  95. "to" : 105.0,
  96. "doc_count" : 19
  97. },
  98. {
  99. "key" : "105.0-225.0",
  100. "from" : 105.0,
  101. "to" : 225.0,
  102. "doc_count" : 11
  103. },
  104. {
  105. "key" : "225.0-445.0",
  106. "from" : 225.0,
  107. "to" : 445.0,
  108. "doc_count" : 20
  109. },
  110. {
  111. "key" : "445.0-665.0",
  112. "from" : 445.0,
  113. "to" : 665.0,
  114. "doc_count" : 20
  115. },
  116. {
  117. "key" : "665.0-885.0",
  118. "from" : 665.0,
  119. "to" : 885.0,
  120. "doc_count" : 20
  121. },
  122. {
  123. "key" : "885.0-1115.0",
  124. "from" : 885.0,
  125. "to" : 1115.0,
  126. "doc_count" : 10
  127. },
  128. {
  129. "key" : "1115.0-1335.0",
  130. "from" : 1115.0,
  131. "to" : 1335.0,
  132. "doc_count" : 0
  133. },
  134. {
  135. "key" : "1335.0-1555.0",
  136. "from" : 1335.0,
  137. "to" : 1555.0,
  138. "doc_count" : 0
  139. },
  140. {
  141. "key" : "1555.0-1775.0",
  142. "from" : 1555.0,
  143. "to" : 1775.0,
  144. "doc_count" : 0
  145. },
  146. {
  147. "key" : "1775.0-*",
  148. "from" : 1775.0,
  149. "doc_count" : 0
  150. }
  151. ]
  152. },
  153. "bucket_correlation" : {
  154. "value" : -0.5759855613334943
  155. }
  156. }
  157. ]
  158. }
  159. }
  160. }