API моделирования конвейера
Выполняет конвейер обработки данных для набора предоставленных документов.
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) 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, вам необходимо иметь право доступа к кластеру
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.
-
deprecated - (Необязательно, логическое значение) Помечает этот конвейер обработки данных как устаревший. Когда на устаревший конвейер обработки данных ссылаются в качестве основного или конечного конвейера при создании или обновлении шаблона индекса, Elasticsearch выведет предупреждение об устаревании.
-
-
docs -
(Обязательно, массив объектов) Примерные документы для тестирования в конвейере.
Свойства объектов
docs-
_id - (Необязательно, строка) Уникальный идентификатор документа. Этот идентификатор должен быть уникальным в пределах
_index. -
_index - (Необязательно, строка) Название индекса, содержащего документ.
-
_routing - (Необязательно, строка) Значение, используемое для отправки документа в конкретный первичный фрагмент. См. поле
_routing. -
_source - (Обязательно, объект) Тело JSON для документа.
-
Примеры
Указание конвейера как параметра пути
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) 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"
}
}
]
} API возвращает следующий ответ:
{
"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"
}
}
}
]
} Указание конвейера в теле запроса
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) 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 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"
}
}
]
} API возвращает следующий ответ:
{
"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 в запрос.
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) 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 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"
}
}
]
} API возвращает следующий ответ:
{
"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"
}
}
}
]
}
]
}
© 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/8.17/simulate-pipeline-api.html