プレビュー変換API
変換のプレビューを表示します。
リクエスト
GET _transform/<transform_id>/_preview
POST _transform/<transform_id>/_preview
GET _transform/_preview
POST _transform/_preview
前提条件
次の権限が必要です:
- クラスター:
manage_transform
(transform_admin
ビルトインロールがこの権限を付与します) - ソースインデックス:
read
,view_index_metadata
.
説明
このAPIは、同じ構成で変換作成APIを実行したときに得られる結果のプレビューを生成します。最大100件の結果を返します。計算はソースインデックスの現在のすべてのデータに基づいています。
また、宛先インデックスのマッピングと設定のリストも生成します。変換を開始する際に宛先インデックスが存在しない場合、これらは使用されるマッピングと設定です。これらの値は、ソースインデックスのフィールドタイプと変換集約に基づいて決定されます。
いくつかの制限があり、これにより不適切なマッピングが発生する可能性があります。回避策として、変換を開始する前に、好みのマッピングを持つ宛先インデックスまたはインデックステンプレートを作成してください。
変換には、latest
またはpivot
のいずれかの方法を選択する必要があります。1つの変換で両方を使用することはできません。
変換をプレビューすると、APIを呼び出すユーザーの資格情報が使用されます。変換を開始すると、最後に作成または更新したユーザーのロールが使用されます。2つのロールセットが異なる場合、プレビューは変換の動作を正確に反映しない可能性があります。このような問題を避けるために、変換を作成または更新したのと同じユーザーがプレビューを行い、期待されるデータが返されることを確認する必要があります。あるいは、二次認証ヘッダーを使用して資格情報を提供してください。
パスパラメータ
<transform_id>
- (オプション、文字列) プレビューする変換のID。
<transform_id>
をパスパラメータとして提供する場合、リクエストボディに変換構成の詳細を提供することはできません。
クエリパラメータ
timeout
- (オプション、時間) 応答を待つ期間。タイムアウトが切れる前に応答が受信されない場合、リクエストは失敗し、エラーが返されます。デフォルトは
30s
です。
リクエストボディ
description
(オプション、文字列) 変換の自由形式の説明。
dest
- (オプション、オブジェクト) 変換の宛先。
- `````index
- (オプション、文字列) 変換の宛先インデックス。
pivot
変換の場合、宛先インデックスのマッピングは可能な限りソースフィールドに基づいて推測されます。代替マッピングが必要な場合は、変換を開始する前にインデックス作成APIを使用してください。latest
変換の場合、マッピングは決して推測されません。宛先インデックスの動的マッピングが望ましくない場合は、変換を開始する前にインデックス作成APIを使用してください。 pipeline
- (オプション、文字列) インジェストパイプラインの一意の識別子。
frequency
(オプション、時間単位) 変換が継続的に実行されているときにソースインデックスの変更をチェックする間隔。最小値は
1s
、最大値は1h
です。デフォルト値は1m
です。latest
(必須、オブジェクト)
latest
メソッドは、各ユニークキーの最新のドキュメントを見つけることによってデータを変換します。- `````sort
- (必須、文字列) 最新のドキュメントを特定するために使用される日付フィールドを指定します。
unique_key
- (必須、文字列の配列) データをグループ化するために使用される1つ以上のフィールドの配列を指定します。
pivot
(必須、オブジェクト)
pivot
メソッドは、データを集約してグループ化することによって変換します。これらのオブジェクトは、group by
フィールドとデータを削減するための集約を定義します。- `````aggregations`````または`````aggs
- (必須、オブジェクト) グループ化されたデータを集約する方法を定義します。現在サポートされている集約は次のとおりです:
group_by
- (必須、オブジェクト) データをグループ化する方法を定義します。1つのピボットごとに複数のグループ化を定義できます。現在サポートされているグループ化は次のとおりです:
retention_policy
(オプション、オブジェクト) 変換の保持ポリシーを定義します。定義された基準を満たすデータは宛先インデックスから削除されます。
- `````time
- (必須、オブジェクト) 変換が保持ポリシーを設定するために時間フィールドを使用することを指定します。保持ポリシーの
time.field
が存在し、max.age
より古いデータが含まれている場合、データは削除されます。- `````field
- (必須、文字列) ドキュメントの年齢を計算するために使用される日付フィールド。
time.field
を既存の日付フィールドに設定します。 max_age
- (必須、時間単位) 宛先インデックス内のドキュメントの最大年齢を指定します。設定された値より古いドキュメントは宛先インデックスから削除されます。
source
(必須、オブジェクト) 変換のデータソース。
- `````index
- (必須、文字列または配列) 変換のソースインデックス。単一のインデックス、インデックスパターン(例:
"my-index-*"
)、インデックスの配列(例:["my-index-000001", "my-index-000002"]
)、またはインデックスパターンの配列(例:["my-index-*", "my-other-index-*"]
)であることができます。リモートインデックスの場合は、"remote_name:index_name"
構文を使用します。
リモートクラスターにインデックスがある場合、マスターノードと少なくとも1つの変換ノードはremote_cluster_client
ノードロールを持っている必要があります。 query
- (オプション、オブジェクト) ソースインデックスからデータのサブセットを取得するクエリ句。詳細はクエリDSLを参照してください。
runtime_mappings
- (オプション、オブジェクト) 変換で使用できる検索時のランタイムフィールドの定義。検索ランタイムフィールドの場合、すべてのデータノード(リモートノードを含む)は7.12以降である必要があります。
sync
(オプション、オブジェクト) 変換が継続的に実行されるために必要なプロパティを定義します。
- `````time
- (オプション、オブジェクト) 変換がソースインデックスと宛先インデックスを同期するために時間フィールドを使用することを指定します。
- `````delay
- (オプション、時間単位) 現在の時間と最新の入力データ時間の間の時間遅延。デフォルト値は
60s
です。 field
- (オプション、文字列) ソース内の新しいドキュメントを特定するために使用される日付フィールド。
settings
- (オプション、オブジェクト) オプションの変換設定を定義します。
- `````align_checkpoints
- (オプション、ブール値) 変換のチェックポイント範囲がパフォーマンスの最適化のために最適化されるべきかどうかを指定します。このような最適化は、変換構成で日付ヒストグラムがグループソースとして指定されている場合、チェックポイント範囲を日付ヒストグラムの間隔に合わせることができます。その結果、宛先インデックスでのドキュメントの更新が少なくなり、全体的なパフォーマンスが向上します。デフォルト値は
true
で、これは可能な場合にチェックポイント範囲が最適化されることを意味します。 dates_as_epoch_millis
- (オプション、ブール値) 出力の日付がISO形式の文字列(デフォルト)またはエポックからのミリ秒として書き込まれるべきかどうかを定義します。
epoch_millis
は、7.11
バージョン以前に作成された変換のデフォルトでした。互換性のある出力を得るには、これをtrue
に設定します。デフォルト値はfalse
です。 deduce_mappings
- (オプション、ブール値) 変換が宛先インデックスのマッピングを変換構成から推測するべきかどうかを指定します。デフォルト値は
true
で、これは可能な場合に宛先インデックスのマッピングが推測されることを意味します。 docs_per_second
- (オプション、浮動小数点数) 1秒あたりの入力ドキュメントの数に制限を指定します。この設定は、検索リクエストの間に待機時間を追加することによって変換を制限します。デフォルト値は
null
で、これは制限を無効にします。 max_page_search_size
- (オプション、整数) 各チェックポイントの合成集約に使用する初期ページサイズを定義します。サーキットブレーカー例外が発生した場合、ページサイズは動的に低い値に調整されます。最小値は
10
、最大値は65,536
です。デフォルト値は500
です。 unattended
- (オプション、ブール値)
true
の場合、変換は無人モードで実行されます。無人モードでは、エラーが発生した場合に変換が無限に再試行されるため、変換は決して失敗しません。無限以外の再試行回数を設定すると、検証に失敗します。デフォルトはfalse
です。
レスポンスボディ
generated_dest_index
- (オブジェクト) 宛先インデックスに関する詳細を含みます。
- `````aliases
- (オブジェクト) 宛先インデックスのエイリアス。
mappings
- (オブジェクト) 宛先インデックス内の各ドキュメントのmappings。
settings
- (オブジェクト) 宛先インデックスのindex settings。
preview
- (配列) ドキュメントの配列。特に、変換によって宛先インデックスに作成されるドキュメントのJSON表現です。
例
Python
resp = client.transform.preview_transform(
source={
"index": "kibana_sample_data_ecommerce"
},
pivot={
"group_by": {
"customer_id": {
"terms": {
"field": "customer_id",
"missing_bucket": True
}
}
},
"aggregations": {
"max_price": {
"max": {
"field": "taxful_total_price"
}
}
}
},
)
print(resp)
Js
const response = await client.transform.previewTransform({
source: {
index: "kibana_sample_data_ecommerce",
},
pivot: {
group_by: {
customer_id: {
terms: {
field: "customer_id",
missing_bucket: true,
},
},
},
aggregations: {
max_price: {
max: {
field: "taxful_total_price",
},
},
},
},
});
console.log(response);
コンソール
POST _transform/_preview
{
"source": {
"index": "kibana_sample_data_ecommerce"
},
"pivot": {
"group_by": {
"customer_id": {
"terms": {
"field": "customer_id",
"missing_bucket": true
}
}
},
"aggregations": {
"max_price": {
"max": {
"field": "taxful_total_price"
}
}
}
}
}
この例で返されるデータは次のとおりです:
Js
{
"preview" : [
{
"max_price" : 171.0,
"customer_id" : "10"
},
{
"max_price" : 233.0,
"customer_id" : "11"
},
{
"max_price" : 200.0,
"customer_id" : "12"
}
...
],
"generated_dest_index" : {
"mappings" : {
"_meta" : {
"_transform" : {
"transform" : "transform-preview",
"version" : {
"created" : "7.7.0"
},
"creation_date_in_millis" : 1584738236757
},
"created_by" : "transform"
},
"properties" : {
"max_price" : {
"type" : "half_float"
},
"customer_id" : {
"type" : "keyword"
}
}
},
"settings" : {
"index" : {
"number_of_shards" : "1",
"auto_expand_replicas" : "0-1"
}
},
"aliases" : { }
}
}