パイプラインAPIのシミュレーション

提供されたドキュメントのセットに対して、インジェストパイプラインを実行します。

Python

  1. resp = client.ingest.simulate(
  2. id="my-pipeline-id",
  3. docs=[
  4. {
  5. "_index": "index",
  6. "_id": "id",
  7. "_source": {
  8. "foo": "bar"
  9. }
  10. },
  11. {
  12. "_index": "index",
  13. "_id": "id",
  14. "_source": {
  15. "foo": "rab"
  16. }
  17. }
  18. ],
  19. )
  20. print(resp)

Js

  1. const response = await client.ingest.simulate({
  2. id: "my-pipeline-id",
  3. docs: [
  4. {
  5. _index: "index",
  6. _id: "id",
  7. _source: {
  8. foo: "bar",
  9. },
  10. },
  11. {
  12. _index: "index",
  13. _id: "id",
  14. _source: {
  15. foo: "rab",
  16. },
  17. },
  18. ],
  19. });
  20. console.log(response);

コンソール

  1. POST /_ingest/pipeline/my-pipeline-id/_simulate
  2. {
  3. "docs": [
  4. {
  5. "_index": "index",
  6. "_id": "id",
  7. "_source": {
  8. "foo": "bar"
  9. }
  10. },
  11. {
  12. "_index": "index",
  13. "_id": "id",
  14. "_source": {
  15. "foo": "rab"
  16. }
  17. }
  18. ]
  19. }

リクエスト

POST /_ingest/pipeline/<pipeline>/_simulate

GET /_ingest/pipeline/<pipeline>/_simulate

POST /_ingest/pipeline/_simulate

GET /_ingest/pipeline/_simulate

前提条件

  • Elasticsearchのセキュリティ機能が有効になっている場合、このAPIを使用するには、read_pipelinemanage_pipelinemanage_ingest_pipelines、またはmanage クラスター権限が必要です。

説明

シミュレートパイプラインAPIは、リクエストのボディに提供されたドキュメントのセットに対して特定のパイプラインを実行します。

提供されたドキュメントに対して実行する既存のパイプラインを指定するか、リクエストのボディにパイプライン定義を提供できます。

パスパラメータ

  • <pipeline>
  • (必須*, 文字列) テストするパイプライン。リクエストボディにpipelineを指定しない場合、このパラメータは必須です。

クエリパラメータ

  • verbose
  • (オプション, ブール) trueの場合、レスポンスには実行されたパイプラインの各プロセッサの出力データが含まれます。

リクエストボディ

  • pipeline
  • (必須*, オブジェクト) テストするパイプライン。<pipeline>リクエストパスパラメータを指定しない場合、このパラメータは必須です。このパラメータとリクエストパスパラメータの両方を指定した場合、APIはリクエストパスパラメータのみを使用します。
    1. - `````description
    • (オプション, 文字列) インジェストパイプラインの説明。
    • on_failure
    • (オプション, プロセッサオブジェクトの配列) プロセッサの失敗後に直ちに実行されるプロセッサ。
      各プロセッサはプロセッサレベルのon_failure値をサポートします。on_failure値を持たないプロセッサが失敗した場合、Elasticsearchはこのパイプラインレベルのパラメータをフォールバックとして使用します。このパラメータのプロセッサは、指定された順序で順次実行されます。Elasticsearchはパイプラインの残りのプロセッサを実行しようとはしません。
    • processors
    • (必須, プロセッサオブジェクトの配列) インデックス作成前にドキュメントに変換を行うために使用されるプロセッサ。プロセッサは指定された順序で順次実行されます。
    • version
    • (オプション, 整数) 外部システムがインジェストパイプラインを追跡するために使用するバージョン番号。
      バージョン属性の使用方法については、上記のif_versionパラメータを参照してください。
    • _meta
    • (オプション, オブジェクト) インジェストパイプラインに関するオプションのメタデータ。任意の内容を持つことができます。このマップはElasticsearchによって自動的に生成されるものではありません。
    • deprecated
    • (オプション, ブール) このインジェストパイプラインを非推奨としてマークします。非推奨のインジェストパイプラインが非推奨でないインデックステンプレートを作成または更新する際にデフォルトまたは最終パイプラインとして参照されると、Elasticsearchは非推奨警告を発します。
  • docs
  • (必須, オブジェクトの配列) パイプラインでテストするサンプルドキュメント。
    1. - `````_id
    • (オプション, 文字列) ドキュメントの一意の識別子。このIDは_index内で一意でなければなりません。
    • _index
    • (オプション, 文字列) ドキュメントを含むインデックスの名前。
    • _routing
    • (オプション, 文字列) ドキュメントを特定のプライマリシャードに送信するために使用される値。_routingフィールドを参照してください。
    • _source
    • (必須, オブジェクト) ドキュメントのJSONボディ。

パイプラインをパスパラメータとして指定

Python

  1. resp = client.ingest.simulate(
  2. id="my-pipeline-id",
  3. docs=[
  4. {
  5. "_index": "index",
  6. "_id": "id",
  7. "_source": {
  8. "foo": "bar"
  9. }
  10. },
  11. {
  12. "_index": "index",
  13. "_id": "id",
  14. "_source": {
  15. "foo": "rab"
  16. }
  17. }
  18. ],
  19. )
  20. print(resp)

Js

  1. const response = await client.ingest.simulate({
  2. id: "my-pipeline-id",
  3. docs: [
  4. {
  5. _index: "index",
  6. _id: "id",
  7. _source: {
  8. foo: "bar",
  9. },
  10. },
  11. {
  12. _index: "index",
  13. _id: "id",
  14. _source: {
  15. foo: "rab",
  16. },
  17. },
  18. ],
  19. });
  20. console.log(response);

コンソール

  1. POST /_ingest/pipeline/my-pipeline-id/_simulate
  2. {
  3. "docs": [
  4. {
  5. "_index": "index",
  6. "_id": "id",
  7. "_source": {
  8. "foo": "bar"
  9. }
  10. },
  11. {
  12. "_index": "index",
  13. "_id": "id",
  14. "_source": {
  15. "foo": "rab"
  16. }
  17. }
  18. ]
  19. }

APIは次のレスポンスを返します:

コンソール-結果

  1. {
  2. "docs": [
  3. {
  4. "doc": {
  5. "_id": "id",
  6. "_index": "index",
  7. "_version": "-3",
  8. "_source": {
  9. "field2": "_value",
  10. "foo": "bar"
  11. },
  12. "_ingest": {
  13. "timestamp": "2017-05-04T22:30:03.187Z"
  14. }
  15. }
  16. },
  17. {
  18. "doc": {
  19. "_id": "id",
  20. "_index": "index",
  21. "_version": "-3",
  22. "_source": {
  23. "field2": "_value",
  24. "foo": "rab"
  25. },
  26. "_ingest": {
  27. "timestamp": "2017-05-04T22:30:03.188Z"
  28. }
  29. }
  30. }
  31. ]
  32. }

リクエストボディにパイプラインを指定

Python

  1. resp = client.ingest.simulate(
  2. pipeline={
  3. "description": "_description",
  4. "processors": [
  5. {
  6. "set": {
  7. "field": "field2",
  8. "value": "_value"
  9. }
  10. }
  11. ]
  12. },
  13. docs=[
  14. {
  15. "_index": "index",
  16. "_id": "id",
  17. "_source": {
  18. "foo": "bar"
  19. }
  20. },
  21. {
  22. "_index": "index",
  23. "_id": "id",
  24. "_source": {
  25. "foo": "rab"
  26. }
  27. }
  28. ],
  29. )
  30. print(resp)

Ruby

  1. response = client.ingest.simulate(
  2. body: {
  3. pipeline: {
  4. description: '_description',
  5. processors: [
  6. {
  7. set: {
  8. field: 'field2',
  9. value: '_value'
  10. }
  11. }
  12. ]
  13. },
  14. docs: [
  15. {
  16. _index: 'index',
  17. _id: 'id',
  18. _source: {
  19. foo: 'bar'
  20. }
  21. },
  22. {
  23. _index: 'index',
  24. _id: 'id',
  25. _source: {
  26. foo: 'rab'
  27. }
  28. }
  29. ]
  30. }
  31. )
  32. puts response

Js

  1. const response = await client.ingest.simulate({
  2. pipeline: {
  3. description: "_description",
  4. processors: [
  5. {
  6. set: {
  7. field: "field2",
  8. value: "_value",
  9. },
  10. },
  11. ],
  12. },
  13. docs: [
  14. {
  15. _index: "index",
  16. _id: "id",
  17. _source: {
  18. foo: "bar",
  19. },
  20. },
  21. {
  22. _index: "index",
  23. _id: "id",
  24. _source: {
  25. foo: "rab",
  26. },
  27. },
  28. ],
  29. });
  30. console.log(response);

コンソール

  1. POST /_ingest/pipeline/_simulate
  2. {
  3. "pipeline" :
  4. {
  5. "description": "_description",
  6. "processors": [
  7. {
  8. "set" : {
  9. "field" : "field2",
  10. "value" : "_value"
  11. }
  12. }
  13. ]
  14. },
  15. "docs": [
  16. {
  17. "_index": "index",
  18. "_id": "id",
  19. "_source": {
  20. "foo": "bar"
  21. }
  22. },
  23. {
  24. "_index": "index",
  25. "_id": "id",
  26. "_source": {
  27. "foo": "rab"
  28. }
  29. }
  30. ]
  31. }

APIは次のレスポンスを返します:

コンソール-結果

  1. {
  2. "docs": [
  3. {
  4. "doc": {
  5. "_id": "id",
  6. "_index": "index",
  7. "_version": "-3",
  8. "_source": {
  9. "field2": "_value",
  10. "foo": "bar"
  11. },
  12. "_ingest": {
  13. "timestamp": "2017-05-04T22:30:03.187Z"
  14. }
  15. }
  16. },
  17. {
  18. "doc": {
  19. "_id": "id",
  20. "_index": "index",
  21. "_version": "-3",
  22. "_source": {
  23. "field2": "_value",
  24. "foo": "rab"
  25. },
  26. "_ingest": {
  27. "timestamp": "2017-05-04T22:30:03.188Z"
  28. }
  29. }
  30. }
  31. ]
  32. }

詳細な結果を表示

シミュレートパイプラインAPIを使用して、各プロセッサがインジェストドキュメントにどのように影響するかを確認できます。シミュレートリクエスト内の各プロセッサの中間結果を確認するには、リクエストにverboseパラメータを追加できます。

Python

  1. resp = client.ingest.simulate(
  2. verbose=True,
  3. pipeline={
  4. "description": "_description",
  5. "processors": [
  6. {
  7. "set": {
  8. "field": "field2",
  9. "value": "_value2"
  10. }
  11. },
  12. {
  13. "set": {
  14. "field": "field3",
  15. "value": "_value3"
  16. }
  17. }
  18. ]
  19. },
  20. docs=[
  21. {
  22. "_index": "index",
  23. "_id": "id",
  24. "_source": {
  25. "foo": "bar"
  26. }
  27. },
  28. {
  29. "_index": "index",
  30. "_id": "id",
  31. "_source": {
  32. "foo": "rab"
  33. }
  34. }
  35. ],
  36. )
  37. print(resp)

Ruby

  1. response = client.ingest.simulate(
  2. verbose: true,
  3. body: {
  4. pipeline: {
  5. description: '_description',
  6. processors: [
  7. {
  8. set: {
  9. field: 'field2',
  10. value: '_value2'
  11. }
  12. },
  13. {
  14. set: {
  15. field: 'field3',
  16. value: '_value3'
  17. }
  18. }
  19. ]
  20. },
  21. docs: [
  22. {
  23. _index: 'index',
  24. _id: 'id',
  25. _source: {
  26. foo: 'bar'
  27. }
  28. },
  29. {
  30. _index: 'index',
  31. _id: 'id',
  32. _source: {
  33. foo: 'rab'
  34. }
  35. }
  36. ]
  37. }
  38. )
  39. puts response

Js

  1. const response = await client.ingest.simulate({
  2. verbose: "true",
  3. pipeline: {
  4. description: "_description",
  5. processors: [
  6. {
  7. set: {
  8. field: "field2",
  9. value: "_value2",
  10. },
  11. },
  12. {
  13. set: {
  14. field: "field3",
  15. value: "_value3",
  16. },
  17. },
  18. ],
  19. },
  20. docs: [
  21. {
  22. _index: "index",
  23. _id: "id",
  24. _source: {
  25. foo: "bar",
  26. },
  27. },
  28. {
  29. _index: "index",
  30. _id: "id",
  31. _source: {
  32. foo: "rab",
  33. },
  34. },
  35. ],
  36. });
  37. console.log(response);

コンソール

  1. POST /_ingest/pipeline/_simulate?verbose=true
  2. {
  3. "pipeline" :
  4. {
  5. "description": "_description",
  6. "processors": [
  7. {
  8. "set" : {
  9. "field" : "field2",
  10. "value" : "_value2"
  11. }
  12. },
  13. {
  14. "set" : {
  15. "field" : "field3",
  16. "value" : "_value3"
  17. }
  18. }
  19. ]
  20. },
  21. "docs": [
  22. {
  23. "_index": "index",
  24. "_id": "id",
  25. "_source": {
  26. "foo": "bar"
  27. }
  28. },
  29. {
  30. "_index": "index",
  31. "_id": "id",
  32. "_source": {
  33. "foo": "rab"
  34. }
  35. }
  36. ]
  37. }

APIは次のレスポンスを返します:

コンソール-結果

  1. {
  2. "docs" : [
  3. {
  4. "processor_results" : [
  5. {
  6. "processor_type" : "set",
  7. "status" : "success",
  8. "doc" : {
  9. "_index" : "index",
  10. "_id" : "id",
  11. "_version": "-3",
  12. "_source" : {
  13. "field2" : "_value2",
  14. "foo" : "bar"
  15. },
  16. "_ingest" : {
  17. "pipeline" : "_simulate_pipeline",
  18. "timestamp" : "2020-07-30T01:21:24.251836Z"
  19. }
  20. }
  21. },
  22. {
  23. "processor_type" : "set",
  24. "status" : "success",
  25. "doc" : {
  26. "_index" : "index",
  27. "_id" : "id",
  28. "_version": "-3",
  29. "_source" : {
  30. "field3" : "_value3",
  31. "field2" : "_value2",
  32. "foo" : "bar"
  33. },
  34. "_ingest" : {
  35. "pipeline" : "_simulate_pipeline",
  36. "timestamp" : "2020-07-30T01:21:24.251836Z"
  37. }
  38. }
  39. }
  40. ]
  41. },
  42. {
  43. "processor_results" : [
  44. {
  45. "processor_type" : "set",
  46. "status" : "success",
  47. "doc" : {
  48. "_index" : "index",
  49. "_id" : "id",
  50. "_version": "-3",
  51. "_source" : {
  52. "field2" : "_value2",
  53. "foo" : "rab"
  54. },
  55. "_ingest" : {
  56. "pipeline" : "_simulate_pipeline",
  57. "timestamp" : "2020-07-30T01:21:24.251863Z"
  58. }
  59. }
  60. },
  61. {
  62. "processor_type" : "set",
  63. "status" : "success",
  64. "doc" : {
  65. "_index" : "index",
  66. "_id" : "id",
  67. "_version": "-3",
  68. "_source" : {
  69. "field3" : "_value3",
  70. "field2" : "_value2",
  71. "foo" : "rab"
  72. },
  73. "_ingest" : {
  74. "pipeline" : "_simulate_pipeline",
  75. "timestamp" : "2020-07-30T01:21:24.251863Z"
  76. }
  77. }
  78. }
  79. ]
  80. }
  81. ]
  82. }