Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Guide [7.17] ›REST API ›Ingest API

API моделирования конвейера

Выполняет конвейер инджеста по набору предоставленных документов.

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, у вас должна быть соответствующая привилегия кластера read_pipeline, manage_pipeline, manage_ingest_pipelines или manage для использования этого API.

Описание

API моделирования конвейера выполняет определённый конвейер по набору документов, предоставленных в теле запроса.

Вы можете указать существующий конвейер для выполнения по предоставленным документам или предоставить определение конвейера в теле запроса.

Параметры пути

<pipeline>
(Обязательно*, строка) Конвейер для тестирования. Если вы не указываете конвейер в теле запроса, этот параметр обязателен.

Параметры запроса

verbose
(Необязательно, булево) Если true, в ответ будут включены данные вывода для каждого процессора в выполняемом конвейере.

Тело запроса

pipeline

(Обязательно*, объект) Конвейер для тестирования. Если вы не указываете параметр пути запроса <pipeline>, этот параметр обязателен. Если вы указываете оба параметра, API использует только параметр пути запроса.

Свойства pipeline
description
(Необязательно, строка) Описание конвейера инджеста.
on_failure

(Необязательно, массив объектов процессора) Процессоры, которые выполняются сразу после ошибки процессора.

Каждый процессор поддерживает значение процессора on_failure. Если процессор без значения on_failure завершится с ошибкой, Elasticsearch использует этот параметр конвейера как резервный вариант. Процессоры в этом параметре выполняются последовательно в указанном порядке. Elasticsearch не будет пытаться запустить оставшиеся процессоры конвейера.

processors
(Обязательно, массив объектов процессора) Процессоры, используемые для выполнения преобразований документов перед индексированием. Процессоры выполняются последовательно в указанном порядке.
version

(Необязательно, целое число) Номер версии, используемый внешними системами для отслеживания конвейеров инджеста.

См. параметр if_version выше, чтобы узнать, как используется атрибут версии.

_meta
(Необязательно, объект) Необязательные метаданные о конвейере инджеста. Может содержать любые данные. Эта карта не генерируется автоматически Elasticsearch.
docs

(Обязательно, массив объектов) Примеры документов для тестирования в конвейере.

Свойства объектов docs
_id
(Необязательно, строка) Уникальный идентификатор документа. Этот идентификатор должен быть уникальным в _index.
_index
(Необязательно, строка) Название индекса, содержащего документ.
_routing
(Необязательно, строка) Значение, используемое для отправки документа на определённый первичный фрагмент. См. поле _routing.
_source
(Обязательно, объект) Тело документа в формате JSON.

Примеры

Укажите конвейер как параметр пути

POST /_ingest/pipeline/my-pipeline-id/_simulate
{
  "docs": [
    {
      "_index": "index",
      "_id": "id",
      "_source": {
        "foo": "bar"
      }
    },
    {
      "_index": "index",
      "_id": "id",
      "_source": {
        "foo": "rab"
      }
    }
  ]
}

API возвращает следующий ответ:

{
   "docs": [
      {
         "doc": {
            "_id": "id",
            "_index": "index",
            "_type": "_doc",
            "_source": {
               "field2": "_value",
               "foo": "bar"
            },
            "_ingest": {
               "timestamp": "2017-05-04T22:30:03.187Z"
            }
         }
      },
      {
         "doc": {
            "_id": "id",
            "_index": "index",
            "_type": "_doc",
            "_source": {
               "field2": "_value",
               "foo": "rab"
            },
            "_ingest": {
               "timestamp": "2017-05-04T22:30:03.188Z"
            }
         }
      }
   ]
}

Укажите конвейер в теле запроса

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"
      }
    }
  ]
}

API возвращает следующий ответ:

{
   "docs": [
      {
         "doc": {
            "_id": "id",
            "_index": "index",
            "_type": "_doc",
            "_source": {
               "field2": "_value",
               "foo": "bar"
            },
            "_ingest": {
               "timestamp": "2017-05-04T22:30:03.187Z"
            }
         }
      },
      {
         "doc": {
            "_id": "id",
            "_index": "index",
            "_type": "_doc",
            "_source": {
               "field2": "_value",
               "foo": "rab"
            },
            "_ingest": {
               "timestamp": "2017-05-04T22:30:03.188Z"
            }
         }
      }
   ]
}

Просмотр подробных результатов

Вы можете использовать API моделирования конвейера, чтобы увидеть, как каждый процессор влияет на документ инджеста, проходящий через конвейер. Чтобы увидеть промежуточные результаты каждого процессора в запросе моделирования, добавьте параметр verbose в запрос.

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"
      }
    }
  ]
}

API возвращает следующий ответ:

{
  "docs": [
    {
      "processor_results": [
        {
          "processor_type": "set",
          "status": "success",
          "doc": {
            "_index": "index",
            "_type": "_doc",
            "_id": "id",
            "_source": {
              "field2": "_value2",
              "foo": "bar"
            },
            "_ingest": {
              "pipeline": "_simulate_pipeline",
              "timestamp": "2020-07-30T01:21:24.251836Z"
            }
          }
        },
        {
          "processor_type": "set",
          "status": "success",
          "doc": {
            "_index": "index",
            "_type": "_doc",
            "_id": "id",
            "_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",
            "_type": "_doc",
            "_id": "id",
            "_source": {
              "field2": "_value2",
              "foo": "rab"
            },
            "_ingest": {
              "pipeline": "_simulate_pipeline",
              "timestamp": "2020-07-30T01:21:24.251863Z"
            }
          }
        },
        {
          "processor_type": "set",
          "status": "success",
          "doc": {
            "_index": "index",
            "_type": "_doc",
            "_id": "id",
            "_source": {
              "field3": "_value3",
              "field2": "_value2",
              "foo": "rab"
            },
            "_ingest": {
              "pipeline": "_simulate_pipeline",
              "timestamp": "2020-07-30T01:21:24.251863Z"
            }
          }
        }
      ]
    }
  ]
}

© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/7.17/simulate-pipeline-api.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API