データフィードAPIのプレビュー
データフィードのプレビューを表示します。
リクエスト
GET _ml/datafeeds/<datafeed_id>/_preview
POST _ml/datafeeds/<datafeed_id>/_preview
GET _ml/datafeeds/_preview
POST _ml/datafeeds/_preview
前提条件
次の権限が必要です:
- クラスター:
manage_ml
(machine_learning_admin
ビルトインロールがこの権限を付与します) - データフィードに設定されたソースインデックス:
read
.
説明
プレビューデータフィードAPIは、データフィードからの検索結果の最初の「ページ」を返します。既存のデータフィードをプレビューするか、APIでデータフィードと異常検出ジョブの構成詳細を提供できます。プレビューは、異常検出エンジンに渡されるデータの構造を示します。
Elasticsearchのセキュリティ機能が有効になっている場合、データフィードクエリはプレビューデータフィードAPIを呼び出すユーザーの資格情報を使用してプレビューされます。データフィードが開始されると、最後に作成または更新したユーザーの役割を使用してクエリが実行されます。2つの役割のセットが異なる場合、プレビューはデータフィードが開始されたときに返す内容を正確に反映しない可能性があります。このような問題を避けるために、データフィードを作成または更新したのと同じユーザーがプレビューを行い、期待されるデータが返されることを確認する必要があります。あるいは、二次認証ヘッダーを使用して資格情報を提供します。
パスパラメータ
<datafeed_id>
- (オプション、文字列) データフィードを一意に識別する数値文字列。この識別子は、小文字の英数字(a-zおよび0-9)、ハイフン、アンダースコアを含むことができます。英数字で始まり、英数字で終わる必要があります。
<datafeed_id>
をパスパラメータとして提供する場合、リクエストボディにデータフィードまたは異常検出ジョブの構成詳細を提供することはできません。
クエリパラメータ
end
- (オプション、文字列) データフィードプレビューが終了すべき時刻。プレビューは提供された値の最後まで行かない場合があります。最初のページの結果のみが返されます。時刻は次の形式のいずれかを使用して指定できます:
- ミリ秒を含むISO 8601形式、例えば
2017-01-22T06:00:00.000Z
- ミリ秒を含まないISO 8601形式、例えば
2017-01-22T06:00:00+00:00
- エポックからのミリ秒、例えば
1485061200000
ISO 8601形式のいずれかを使用する日付時刻引数には、タイムゾーン指定子が必要で、Z
はUTC時間の略称として受け入れられます。
URLが期待される場合(例えば、ブラウザで)、タイムゾーン指定子で使用される+
は%2B
としてエンコードする必要があります。
この値は排他的です。
- ミリ秒を含むISO 8601形式、例えば
start
- (オプション、文字列) データフィードプレビューが開始すべき時刻。これは
end
パラメータと同じ形式を使用して指定できます。この値は包括的です。
start
またはend
パラメータのいずれかを提供しない場合、データフィードプレビューはデータの全期間を検索しますが、cold
またはfrozen
データティア内のデータは除外します。
リクエストボディ
datafeed_config
- (オプション、オブジェクト) プレビューするデータフィード定義。有効な定義については、データフィード作成APIを参照してください。
job_config
- (オプション、オブジェクト) データフィードに関連付けられた異常検出ジョブの構成詳細。
datafeed_config
オブジェクトに既存の異常検出ジョブを参照するjob_id
が含まれていない場合、このjob_config
オブジェクトを提供する必要があります。job_id
とjob_config
の両方を含める場合、後者の情報が使用されます。job_config
オブジェクトを指定することはできませんが、datafeed_config
オブジェクトも提供する必要があります。有効な定義については、異常検出ジョブ作成APIを参照してください。
例
これは、既存のデータフィードのIDを提供する例です:
Python
resp = client.ml.preview_datafeed(
datafeed_id="datafeed-high_sum_total_sales",
)
print(resp)
Ruby
response = client.ml.preview_datafeed(
datafeed_id: 'datafeed-high_sum_total_sales'
)
puts response
Js
const response = await client.ml.previewDatafeed({
datafeed_id: "datafeed-high_sum_total_sales",
});
console.log(response);
コンソール
GET _ml/datafeeds/datafeed-high_sum_total_sales/_preview
コンソール-結果
[
{
"order_date" : 1574294659000,
"category.keyword" : "Men's Clothing",
"customer_full_name.keyword" : "Sultan Al Benson",
"taxful_total_price" : 35.96875
},
{
"order_date" : 1574294918000,
"category.keyword" : [
"Women's Accessories",
"Women's Clothing"
],
"customer_full_name.keyword" : "Pia Webb",
"taxful_total_price" : 83.0
},
{
"order_date" : 1574295782000,
"category.keyword" : [
"Women's Accessories",
"Women's Shoes"
],
"customer_full_name.keyword" : "Brigitte Graham",
"taxful_total_price" : 72.0
}
]
次の例は、APIでデータフィードと異常検出ジョブの構成詳細を提供します:
Python
resp = client.ml.preview_datafeed(
datafeed_config={
"indices": [
"kibana_sample_data_ecommerce"
],
"query": {
"bool": {
"filter": [
{
"term": {
"_index": "kibana_sample_data_ecommerce"
}
}
]
}
},
"scroll_size": 1000
},
job_config={
"description": "Find customers spending an unusually high amount in an hour",
"analysis_config": {
"bucket_span": "1h",
"detectors": [
{
"detector_description": "High total sales",
"function": "high_sum",
"field_name": "taxful_total_price",
"over_field_name": "customer_full_name.keyword"
}
],
"influencers": [
"customer_full_name.keyword",
"category.keyword"
]
},
"analysis_limits": {
"model_memory_limit": "10mb"
},
"data_description": {
"time_field": "order_date",
"time_format": "epoch_ms"
}
},
)
print(resp)
Ruby
response = client.ml.preview_datafeed(
body: {
datafeed_config: {
indices: [
'kibana_sample_data_ecommerce'
],
query: {
bool: {
filter: [
{
term: {
_index: 'kibana_sample_data_ecommerce'
}
}
]
}
},
scroll_size: 1000
},
job_config: {
description: 'Find customers spending an unusually high amount in an hour',
analysis_config: {
bucket_span: '1h',
detectors: [
{
detector_description: 'High total sales',
function: 'high_sum',
field_name: 'taxful_total_price',
over_field_name: 'customer_full_name.keyword'
}
],
influencers: [
'customer_full_name.keyword',
'category.keyword'
]
},
analysis_limits: {
model_memory_limit: '10mb'
},
data_description: {
time_field: 'order_date',
time_format: 'epoch_ms'
}
}
}
)
puts response
Js
const response = await client.ml.previewDatafeed({
datafeed_config: {
indices: ["kibana_sample_data_ecommerce"],
query: {
bool: {
filter: [
{
term: {
_index: "kibana_sample_data_ecommerce",
},
},
],
},
},
scroll_size: 1000,
},
job_config: {
description: "Find customers spending an unusually high amount in an hour",
analysis_config: {
bucket_span: "1h",
detectors: [
{
detector_description: "High total sales",
function: "high_sum",
field_name: "taxful_total_price",
over_field_name: "customer_full_name.keyword",
},
],
influencers: ["customer_full_name.keyword", "category.keyword"],
},
analysis_limits: {
model_memory_limit: "10mb",
},
data_description: {
time_field: "order_date",
time_format: "epoch_ms",
},
},
});
console.log(response);
コンソール
POST _ml/datafeeds/_preview
{
"datafeed_config": {
"indices" : [
"kibana_sample_data_ecommerce"
],
"query" : {
"bool" : {
"filter" : [
{
"term" : {
"_index" : "kibana_sample_data_ecommerce"
}
}
]
}
},
"scroll_size" : 1000
},
"job_config": {
"description" : "Find customers spending an unusually high amount in an hour",
"analysis_config" : {
"bucket_span" : "1h",
"detectors" : [
{
"detector_description" : "High total sales",
"function" : "high_sum",
"field_name" : "taxful_total_price",
"over_field_name" : "customer_full_name.keyword"
}
],
"influencers" : [
"customer_full_name.keyword",
"category.keyword"
]
},
"analysis_limits" : {
"model_memory_limit" : "10mb"
},
"data_description" : {
"time_field" : "order_date",
"time_format" : "epoch_ms"
}
}
}
コンソール-結果
[
{
"order_date" : 1574294659000,
"category.keyword" : "Men's Clothing",
"customer_full_name.keyword" : "Sultan Al Benson",
"taxful_total_price" : 35.96875
},
{
"order_date" : 1574294918000,
"category.keyword" : [
"Women's Accessories",
"Women's Clothing"
],
"customer_full_name.keyword" : "Pia Webb",
"taxful_total_price" : 83.0
},
{
"order_date" : 1574295782000,
"category.keyword" : [
"Women's Accessories",
"Women's Shoes"
],
"customer_full_name.keyword" : "Brigitte Graham",
"taxful_total_price" : 72.0
}
]