バケット取得API
1つ以上のバケットの異常検出ジョブの結果を取得します。
リクエスト
GET _ml/anomaly_detectors/<job_id>/results/buckets
GET _ml/anomaly_detectors/<job_id>/results/buckets/<timestamp>
前提条件
monitor_ml
クラスター権限が必要です。この権限は machine_learning_user
ビルトインロールに含まれています。
説明
バケット取得APIは、バケットごとにグループ化されたレコードの時系列ビューを提供します。
パスパラメータ
<job_id>
- (必須、文字列) 異常検出ジョブの識別子。
<timestamp>
- (オプション、文字列) 単一のバケット結果のタイムスタンプ。このパラメータを指定しない場合、APIはすべてのバケットに関する情報を返します。
クエリパラメータ
anomaly_score
- (オプション、倍精度浮動小数点数) この値以上の異常スコアを持つバケットを返します。デフォルトは
0.0
です。 desc
- (オプション、ブール値) trueの場合、バケットは降順にソートされます。デフォルトは
false
です。 end
- (オプション、文字列) この時間よりも早いタイムスタンプを持つバケットを返します。デフォルトは
-1
で、これは未設定であり、結果は特定のタイムスタンプに制限されません。 exclude_interim
- (オプション、ブール値)
true
の場合、出力は中間結果を除外します。デフォルトはfalse
で、これは中間結果が含まれることを意味します。 expand
- (オプション、ブール値) trueの場合、出力には異常レコードが含まれます。デフォルトは
false
です。 from
- (オプション、整数) 指定された数のバケットをスキップします。デフォルトは
0
です。 size
- (オプション、整数) 取得するバケットの最大数を指定します。デフォルトは
100
です。 sort
- (オプション、文字列) リクエストされたバケットのソートフィールドを指定します。デフォルトでは、バケットは
timestamp
フィールドでソートされます。 start
- (オプション、文字列) この時間以降のタイムスタンプを持つバケットを返します。デフォルトは
-1
で、これは未設定であり、結果は特定のタイムスタンプに制限されません。
リクエストボディ
リクエストボディ内でクエリパラメータを指定することもできます。例外は from
と size
で、代わりに page
を使用します:
page
page
のプロパティfrom
- (オプション、整数) 指定された数のバケットをスキップします。デフォルトは
0
です。 size
- (オプション、整数) 取得するバケットの最大数を指定します。デフォルトは
100
です。
レスポンスボディ
APIは、次のプロパティを持つバケットオブジェクトの配列を返します:
anomaly_score
- (数値) バケットインフルエンサーの最大異常スコア、0-100の範囲。このスコアは、ジョブの全体的な、レート制限されたスコアです。バケット内のすべての異常レコードがこのスコアに寄与します。この値は、新しいデータが分析されると更新される可能性があります。
bucket_influencers
- (配列) バケットインフルエンサーオブジェクトの配列。
bucket_influencers
のプロパティanomaly_score
- (数値) 各バケットインフルエンサーに対して計算された0-100の範囲の正規化スコア。このスコアは、新しいデータが分析されると更新される可能性があります。
bucket_span
- (数値) バケットの長さ(秒単位)。この値は、ジョブで指定された
bucket_span
に一致します。 influencer_field_name
- (文字列) インフルエンサーのフィールド名。
initial_anomaly_score
- (数値) 各バケットインフルエンサーの0-100の範囲のスコア。このスコアは、バケットが処理された時点で計算された初期値です。
is_interim
- (ブール値)
true
の場合、これは中間結果です。言い換えれば、結果は部分的な入力データに基づいて計算されます。 job_id
- (文字列) 異常検出ジョブの識別子。
probability
- (数値) この動作を持つバケットの確率、0から1の範囲。この値は300以上の小数点以下の精度を持つことができるため、
anomaly_score
は人間が読みやすく、親しみやすい解釈として提供されます。 raw_anomaly_score
- (数値) 内部。
result_type
- (文字列) 内部。この値は常に
bucket_influencer
に設定されます。 timestamp
- (日付) これらの結果が計算されたバケットの開始時間。
bucket_span
- (数値) バケットの長さ(秒単位)。この値は、ジョブで指定された
bucket_span
に一致します。 event_count
- (数値) このバケットで処理された入力データレコードの数。
initial_anomaly_score
- (数値) バケットインフルエンサーの最大
anomaly_score
。この値は、バケットが処理された時点で計算された初期値です。 is_interim
- (ブール値)
true
の場合、これは中間結果です。言い換えれば、結果は部分的な入力データに基づいて計算されます。 job_id
- (文字列) 異常検出ジョブの識別子。
processing_time_ms
- (数値) バケットの内容を分析し、結果を計算するのにかかった時間(ミリ秒単位)。
result_type
- (文字列) 内部。この値は常に
bucket
に設定されます。 timestamp
- (日付) バケットの開始時間。このタイムスタンプはバケットを一意に識別します。バケットのタイムスタンプで正確に発生するイベントは、バケットの結果に含まれます。
例
Python
resp = client.ml.get_buckets(
job_id="low_request_rate",
anomaly_score=80,
start="1454530200001",
)
print(resp)
Ruby
response = client.ml.get_buckets(
job_id: 'low_request_rate',
body: {
anomaly_score: 80,
start: '1454530200001'
}
)
puts response
Js
const response = await client.ml.getBuckets({
job_id: "low_request_rate",
anomaly_score: 80,
start: 1454530200001,
});
console.log(response);
コンソール
GET _ml/anomaly_detectors/low_request_rate/results/buckets
{
"anomaly_score": 80,
"start": "1454530200001"
}
この例では、APIは指定されたスコアと時間制約に一致する単一の結果を返します:
Js
{
"count" : 1,
"buckets" : [
{
"job_id" : "low_request_rate",
"timestamp" : 1578398400000,
"anomaly_score" : 91.58505459594764,
"bucket_span" : 3600,
"initial_anomaly_score" : 91.58505459594764,
"event_count" : 0,
"is_interim" : false,
"bucket_influencers" : [
{
"job_id" : "low_request_rate",
"result_type" : "bucket_influencer",
"influencer_field_name" : "bucket_time",
"initial_anomaly_score" : 91.58505459594764,
"anomaly_score" : 91.58505459594764,
"raw_anomaly_score" : 0.5758246639716365,
"probability" : 1.7340849573442696E-4,
"timestamp" : 1578398400000,
"bucket_span" : 3600,
"is_interim" : false
}
],
"processing_time_ms" : 0,
"result_type" : "bucket"
}
]
}