セットプロセッサ
指定された値に関連付けられたフィールドを設定します。フィールドがすでに存在する場合、その値は提供されたもので置き換えられます。
名前 | 必須 | デフォルト | 説明 |
---|---|---|---|
field |
はい | - | 挿入、アップサート、または更新するフィールド。 テンプレートスニペットをサポートしています。 |
value |
はい* | - | フィールドに設定する値。 テンプレートスニペットをサポートしています。 value またはcopy_from のいずれか一方のみを指定できます。 |
copy_from |
いいえ | - | field にコピーされる元のフィールド。value を同時に設定することはできません。 サポートされているデータ型はboolean 、number 、array 、object 、string 、date などです。 |
override |
いいえ | true |
true プロセッサが既存の非NULL値フィールドを更新します。false に設定すると、そのようなフィールドは変更されません。 |
ignore_empty_value |
いいえ | false |
true とvalue (これはテンプレートスニペットでnull または空文字列に評価される)と組み合わせて使用される場合、プロセッサはドキュメントを変更せずに静かに終了します。同様に、copy_from と組み合わせて使用される場合、フィールドが存在しないか、その値がnull または空文字列に評価されると静かに終了します。 |
media_type |
いいえ | application/json |
value のエンコーディングのメディアタイプ。value がテンプレートスニペットである場合にのみ適用されます。application/json 、text/plain 、またはapplication/x-www-form-urlencoded のいずれかでなければなりません。 |
description |
いいえ | - | プロセッサの説明。プロセッサの目的や構成を説明するのに役立ちます。 |
if |
いいえ | - | プロセッサを条件付きで実行します。 プロセッサを条件付きで実行するを参照してください。 |
ignore_failure |
いいえ | false |
プロセッサの失敗を無視します。 パイプラインの失敗を処理するを参照してください。 |
on_failure |
いいえ | - | プロセッサの失敗を処理します。 パイプラインの失敗を処理するを参照してください。 |
tag |
いいえ | - | プロセッサの識別子。デバッグやメトリクスに役立ちます。 |
Js
{
"description" : "sets the value of count to 1",
"set": {
"field": "count",
"value": 1
}
}
このプロセッサは、データを1つのフィールドから別のフィールドにコピーするためにも使用できます。例えば:
Python
resp = client.ingest.put_pipeline(
id="set_os",
description="sets the value of host.os.name from the field os",
processors=[
{
"set": {
"field": "host.os.name",
"value": "{{{os}}}"
}
}
],
)
print(resp)
resp1 = client.ingest.simulate(
id="set_os",
docs=[
{
"_source": {
"os": "Ubuntu"
}
}
],
)
print(resp1)
Ruby
response = client.ingest.put_pipeline(
id: 'set_os',
body: {
description: 'sets the value of host.os.name from the field os',
processors: [
{
set: {
field: 'host.os.name',
value: '{{{os}}}'
}
}
]
}
)
puts response
response = client.ingest.simulate(
id: 'set_os',
body: {
docs: [
{
_source: {
os: 'Ubuntu'
}
}
]
}
)
puts response
Js
const response = await client.ingest.putPipeline({
id: "set_os",
description: "sets the value of host.os.name from the field os",
processors: [
{
set: {
field: "host.os.name",
value: "{{{os}}}",
},
},
],
});
console.log(response);
const response1 = await client.ingest.simulate({
id: "set_os",
docs: [
{
_source: {
os: "Ubuntu",
},
},
],
});
console.log(response1);
Console
PUT _ingest/pipeline/set_os
{
"description": "sets the value of host.os.name from the field os",
"processors": [
{
"set": {
"field": "host.os.name",
"value": "{{{os}}}"
}
}
]
}
POST _ingest/pipeline/set_os/_simulate
{
"docs": [
{
"_source": {
"os": "Ubuntu"
}
}
]
}
Console-Result
{
"docs" : [
{
"doc" : {
"_index" : "_index",
"_id" : "_id",
"_version" : "-3",
"_source" : {
"host" : {
"os" : {
"name" : "Ubuntu"
}
},
"os" : "Ubuntu"
},
"_ingest" : {
"timestamp" : "2019-03-11T21:54:37.909224Z"
}
}
}
]
}
このプロセッサは、ドット表記を使用して配列フィールドにアクセスすることもできます:
Python
resp = client.ingest.simulate(
pipeline={
"processors": [
{
"set": {
"field": "my_field",
"value": "{{{input_field.1}}}"
}
}
]
},
docs=[
{
"_index": "index",
"_id": "id",
"_source": {
"input_field": [
"Ubuntu",
"Windows",
"Ventura"
]
}
}
],
)
print(resp)
Ruby
response = client.ingest.simulate(
body: {
pipeline: {
processors: [
{
set: {
field: 'my_field',
value: '{{{input_field.1}}}'
}
}
]
},
docs: [
{
_index: 'index',
_id: 'id',
_source: {
input_field: [
'Ubuntu',
'Windows',
'Ventura'
]
}
}
]
}
)
puts response
Js
const response = await client.ingest.simulate({
pipeline: {
processors: [
{
set: {
field: "my_field",
value: "{{{input_field.1}}}",
},
},
],
},
docs: [
{
_index: "index",
_id: "id",
_source: {
input_field: ["Ubuntu", "Windows", "Ventura"],
},
},
],
});
console.log(response);
Console
POST /_ingest/pipeline/_simulate
{
"pipeline": {
"processors": [
{
"set": {
"field": "my_field",
"value": "{{{input_field.1}}}"
}
}
]
},
"docs": [
{
"_index": "index",
"_id": "id",
"_source": {
"input_field": [
"Ubuntu",
"Windows",
"Ventura"
]
}
}
]
}
Console-Result
{
"docs": [
{
"doc": {
"_index": "index",
"_id": "id",
"_version": "-3",
"_source": {
"input_field": [
"Ubuntu",
"Windows",
"Ventura"
],
"my_field": "Windows"
},
"_ingest": {
"timestamp": "2023-05-05T16:04:16.456475214Z"
}
}
}
]
}
配列やオブジェクトなどの複雑な値を含むフィールドの内容は、copy_from
を使用して別のフィールドにコピーできます:
Python
resp = client.ingest.put_pipeline(
id="set_bar",
description="sets the value of bar from the field foo",
processors=[
{
"set": {
"field": "bar",
"copy_from": "foo"
}
}
],
)
print(resp)
resp1 = client.ingest.simulate(
id="set_bar",
docs=[
{
"_source": {
"foo": [
"foo1",
"foo2"
]
}
}
],
)
print(resp1)
Ruby
response = client.ingest.put_pipeline(
id: 'set_bar',
body: {
description: 'sets the value of bar from the field foo',
processors: [
{
set: {
field: 'bar',
copy_from: 'foo'
}
}
]
}
)
puts response
response = client.ingest.simulate(
id: 'set_bar',
body: {
docs: [
{
_source: {
foo: [
'foo1',
'foo2'
]
}
}
]
}
)
puts response
Js
const response = await client.ingest.putPipeline({
id: "set_bar",
description: "sets the value of bar from the field foo",
processors: [
{
set: {
field: "bar",
copy_from: "foo",
},
},
],
});
console.log(response);
const response1 = await client.ingest.simulate({
id: "set_bar",
docs: [
{
_source: {
foo: ["foo1", "foo2"],
},
},
],
});
console.log(response1);
Console
PUT _ingest/pipeline/set_bar
{
"description": "sets the value of bar from the field foo",
"processors": [
{
"set": {
"field": "bar",
"copy_from": "foo"
}
}
]
}
POST _ingest/pipeline/set_bar/_simulate
{
"docs": [
{
"_source": {
"foo": ["foo1", "foo2"]
}
}
]
}
Console-Result
{
"docs" : [
{
"doc" : {
"_index" : "_index",
"_id" : "_id",
"_version" : "-3",
"_source" : {
"bar": ["foo1", "foo2"],
"foo": ["foo1", "foo2"]
},
"_ingest" : {
"timestamp" : "2020-09-30T12:55:17.742795Z"
}
}
}
]
}