パイプラインAPIのシミュレーション
提供されたドキュメントのセットに対して、インジェストパイプラインを実行します。
Python
resp = client.ingest.simulate(
id="my-pipeline-id",
docs=[
{
"_index": "index",
"_id": "id",
"_source": {
"foo": "bar"
}
},
{
"_index": "index",
"_id": "id",
"_source": {
"foo": "rab"
}
}
],
)
print(resp)
Js
const response = await client.ingest.simulate({
id: "my-pipeline-id",
docs: [
{
_index: "index",
_id: "id",
_source: {
foo: "bar",
},
},
{
_index: "index",
_id: "id",
_source: {
foo: "rab",
},
},
],
});
console.log(response);
コンソール
POST /_ingest/pipeline/my-pipeline-id/_simulate
{
"docs": [
{
"_index": "index",
"_id": "id",
"_source": {
"foo": "bar"
}
},
{
"_index": "index",
"_id": "id",
"_source": {
"foo": "rab"
}
}
]
}
リクエスト
POST /_ingest/pipeline/<pipeline>/_simulate
GET /_ingest/pipeline/<pipeline>/_simulate
POST /_ingest/pipeline/_simulate
GET /_ingest/pipeline/_simulate
前提条件
- Elasticsearchのセキュリティ機能が有効になっている場合、このAPIを使用するには、
read_pipeline
、manage_pipeline
、manage_ingest_pipelines
、またはmanage
クラスター権限が必要です。
説明
シミュレートパイプラインAPIは、リクエストのボディに提供されたドキュメントのセットに対して特定のパイプラインを実行します。
提供されたドキュメントに対して実行する既存のパイプラインを指定するか、リクエストのボディにパイプライン定義を提供できます。
パスパラメータ
<pipeline>
- (必須*, 文字列) テストするパイプライン。リクエストボディに
pipeline
を指定しない場合、このパラメータは必須です。
クエリパラメータ
verbose
- (オプション, ブール)
true
の場合、レスポンスには実行されたパイプラインの各プロセッサの出力データが含まれます。
リクエストボディ
pipeline
- (必須*, オブジェクト) テストするパイプライン。
<pipeline>
リクエストパスパラメータを指定しない場合、このパラメータは必須です。このパラメータとリクエストパスパラメータの両方を指定した場合、APIはリクエストパスパラメータのみを使用します。- `````description
- (オプション, 文字列) インジェストパイプラインの説明。
on_failure
- (オプション, プロセッサオブジェクトの配列) プロセッサの失敗後に直ちに実行されるプロセッサ。
各プロセッサはプロセッサレベルのon_failure
値をサポートします。on_failure
値を持たないプロセッサが失敗した場合、Elasticsearchはこのパイプラインレベルのパラメータをフォールバックとして使用します。このパラメータのプロセッサは、指定された順序で順次実行されます。Elasticsearchはパイプラインの残りのプロセッサを実行しようとはしません。 processors
- (必須, プロセッサオブジェクトの配列) インデックス作成前にドキュメントに変換を行うために使用されるプロセッサ。プロセッサは指定された順序で順次実行されます。
version
- (オプション, 整数) 外部システムがインジェストパイプラインを追跡するために使用するバージョン番号。
バージョン属性の使用方法については、上記のif_version
パラメータを参照してください。 _meta
- (オプション, オブジェクト) インジェストパイプラインに関するオプションのメタデータ。任意の内容を持つことができます。このマップはElasticsearchによって自動的に生成されるものではありません。
deprecated
- (オプション, ブール) このインジェストパイプラインを非推奨としてマークします。非推奨のインジェストパイプラインが非推奨でないインデックステンプレートを作成または更新する際にデフォルトまたは最終パイプラインとして参照されると、Elasticsearchは非推奨警告を発します。
docs
- (必須, オブジェクトの配列) パイプラインでテストするサンプルドキュメント。
- `````_id
- (オプション, 文字列) ドキュメントの一意の識別子。このIDは
_index
内で一意でなければなりません。 _index
- (オプション, 文字列) ドキュメントを含むインデックスの名前。
_routing
- (オプション, 文字列) ドキュメントを特定のプライマリシャードに送信するために使用される値。
_routing
フィールドを参照してください。 _source
- (必須, オブジェクト) ドキュメントのJSONボディ。
例
パイプラインをパスパラメータとして指定
Python
resp = client.ingest.simulate(
id="my-pipeline-id",
docs=[
{
"_index": "index",
"_id": "id",
"_source": {
"foo": "bar"
}
},
{
"_index": "index",
"_id": "id",
"_source": {
"foo": "rab"
}
}
],
)
print(resp)
Js
const response = await client.ingest.simulate({
id: "my-pipeline-id",
docs: [
{
_index: "index",
_id: "id",
_source: {
foo: "bar",
},
},
{
_index: "index",
_id: "id",
_source: {
foo: "rab",
},
},
],
});
console.log(response);
コンソール
POST /_ingest/pipeline/my-pipeline-id/_simulate
{
"docs": [
{
"_index": "index",
"_id": "id",
"_source": {
"foo": "bar"
}
},
{
"_index": "index",
"_id": "id",
"_source": {
"foo": "rab"
}
}
]
}
コンソール-結果
{
"docs": [
{
"doc": {
"_id": "id",
"_index": "index",
"_version": "-3",
"_source": {
"field2": "_value",
"foo": "bar"
},
"_ingest": {
"timestamp": "2017-05-04T22:30:03.187Z"
}
}
},
{
"doc": {
"_id": "id",
"_index": "index",
"_version": "-3",
"_source": {
"field2": "_value",
"foo": "rab"
},
"_ingest": {
"timestamp": "2017-05-04T22:30:03.188Z"
}
}
}
]
}
リクエストボディにパイプラインを指定
Python
resp = client.ingest.simulate(
pipeline={
"description": "_description",
"processors": [
{
"set": {
"field": "field2",
"value": "_value"
}
}
]
},
docs=[
{
"_index": "index",
"_id": "id",
"_source": {
"foo": "bar"
}
},
{
"_index": "index",
"_id": "id",
"_source": {
"foo": "rab"
}
}
],
)
print(resp)
Ruby
response = client.ingest.simulate(
body: {
pipeline: {
description: '_description',
processors: [
{
set: {
field: 'field2',
value: '_value'
}
}
]
},
docs: [
{
_index: 'index',
_id: 'id',
_source: {
foo: 'bar'
}
},
{
_index: 'index',
_id: 'id',
_source: {
foo: 'rab'
}
}
]
}
)
puts response
Js
const response = await client.ingest.simulate({
pipeline: {
description: "_description",
processors: [
{
set: {
field: "field2",
value: "_value",
},
},
],
},
docs: [
{
_index: "index",
_id: "id",
_source: {
foo: "bar",
},
},
{
_index: "index",
_id: "id",
_source: {
foo: "rab",
},
},
],
});
console.log(response);
コンソール
POST /_ingest/pipeline/_simulate
{
"pipeline" :
{
"description": "_description",
"processors": [
{
"set" : {
"field" : "field2",
"value" : "_value"
}
}
]
},
"docs": [
{
"_index": "index",
"_id": "id",
"_source": {
"foo": "bar"
}
},
{
"_index": "index",
"_id": "id",
"_source": {
"foo": "rab"
}
}
]
}
コンソール-結果
{
"docs": [
{
"doc": {
"_id": "id",
"_index": "index",
"_version": "-3",
"_source": {
"field2": "_value",
"foo": "bar"
},
"_ingest": {
"timestamp": "2017-05-04T22:30:03.187Z"
}
}
},
{
"doc": {
"_id": "id",
"_index": "index",
"_version": "-3",
"_source": {
"field2": "_value",
"foo": "rab"
},
"_ingest": {
"timestamp": "2017-05-04T22:30:03.188Z"
}
}
}
]
}
詳細な結果を表示
シミュレートパイプラインAPIを使用して、各プロセッサがインジェストドキュメントにどのように影響するかを確認できます。シミュレートリクエスト内の各プロセッサの中間結果を確認するには、リクエストにverbose
パラメータを追加できます。
Python
resp = client.ingest.simulate(
verbose=True,
pipeline={
"description": "_description",
"processors": [
{
"set": {
"field": "field2",
"value": "_value2"
}
},
{
"set": {
"field": "field3",
"value": "_value3"
}
}
]
},
docs=[
{
"_index": "index",
"_id": "id",
"_source": {
"foo": "bar"
}
},
{
"_index": "index",
"_id": "id",
"_source": {
"foo": "rab"
}
}
],
)
print(resp)
Ruby
response = client.ingest.simulate(
verbose: true,
body: {
pipeline: {
description: '_description',
processors: [
{
set: {
field: 'field2',
value: '_value2'
}
},
{
set: {
field: 'field3',
value: '_value3'
}
}
]
},
docs: [
{
_index: 'index',
_id: 'id',
_source: {
foo: 'bar'
}
},
{
_index: 'index',
_id: 'id',
_source: {
foo: 'rab'
}
}
]
}
)
puts response
Js
const response = await client.ingest.simulate({
verbose: "true",
pipeline: {
description: "_description",
processors: [
{
set: {
field: "field2",
value: "_value2",
},
},
{
set: {
field: "field3",
value: "_value3",
},
},
],
},
docs: [
{
_index: "index",
_id: "id",
_source: {
foo: "bar",
},
},
{
_index: "index",
_id: "id",
_source: {
foo: "rab",
},
},
],
});
console.log(response);
コンソール
POST /_ingest/pipeline/_simulate?verbose=true
{
"pipeline" :
{
"description": "_description",
"processors": [
{
"set" : {
"field" : "field2",
"value" : "_value2"
}
},
{
"set" : {
"field" : "field3",
"value" : "_value3"
}
}
]
},
"docs": [
{
"_index": "index",
"_id": "id",
"_source": {
"foo": "bar"
}
},
{
"_index": "index",
"_id": "id",
"_source": {
"foo": "rab"
}
}
]
}
コンソール-結果
{
"docs" : [
{
"processor_results" : [
{
"processor_type" : "set",
"status" : "success",
"doc" : {
"_index" : "index",
"_id" : "id",
"_version": "-3",
"_source" : {
"field2" : "_value2",
"foo" : "bar"
},
"_ingest" : {
"pipeline" : "_simulate_pipeline",
"timestamp" : "2020-07-30T01:21:24.251836Z"
}
}
},
{
"processor_type" : "set",
"status" : "success",
"doc" : {
"_index" : "index",
"_id" : "id",
"_version": "-3",
"_source" : {
"field3" : "_value3",
"field2" : "_value2",
"foo" : "bar"
},
"_ingest" : {
"pipeline" : "_simulate_pipeline",
"timestamp" : "2020-07-30T01:21:24.251836Z"
}
}
}
]
},
{
"processor_results" : [
{
"processor_type" : "set",
"status" : "success",
"doc" : {
"_index" : "index",
"_id" : "id",
"_version": "-3",
"_source" : {
"field2" : "_value2",
"foo" : "rab"
},
"_ingest" : {
"pipeline" : "_simulate_pipeline",
"timestamp" : "2020-07-30T01:21:24.251863Z"
}
}
},
{
"processor_type" : "set",
"status" : "success",
"doc" : {
"_index" : "index",
"_id" : "id",
"_version": "-3",
"_source" : {
"field3" : "_value3",
"field2" : "_value2",
"foo" : "rab"
},
"_ingest" : {
"pipeline" : "_simulate_pipeline",
"timestamp" : "2020-07-30T01:21:24.251863Z"
}
}
}
]
}
]
}