【发布时间】:2021-04-17 04:15:53
【问题描述】:
我在 elasticstack 中创建可以访问 _source 对象之外的字段的摄取管道时遇到问题。我正在使用弹性堆栈 7.8。这是一个简单的例子:
POST _ingest/pipeline/_simulate
{
"pipeline": {
"processors": [
{
"set": {
"field": "foo_found",
"value": "true",
"if": "ctx.foo != null && ctx.foo =~ /foo/"
}
},
{
"set": {
"field": "bar_found",
"value": "true",
"if": "bar != null && bar =~ /bar/"
}
}
]
},
"docs": [
{
"_source": {
"foo": "foofoo"
},
"bar":"barbar"
}
]
}
想要的结果如下:
{
"docs": [
{
"doc": {
"_source": {
"foo_found": "true",
"foo": "foofoo",
"bar_found": "true"
},
"bar":"barbar"
}
}
]
}
管道无法运行。
是否可以访问位于_source 对象之外的bar 字段?
如果第二个set 处理器被删除,该示例将运行,如下所示:
POST _ingest/pipeline/_simulate
{
"pipeline": {
"processors": [
{
"set": {
"field": "foo_found",
"value": "true",
"if": "ctx.foo != null && ctx.foo =~ /foo/"
}
}
]
},
"docs": [
{
"_source": {
"foo": "foofoo"
},
"bar":"barbar"
}
]
}
【问题讨论】:
-
在代表您的文档的
_source之外有任何字段都是没有意义的,除了“官方”字段,即_id、_routing和_index
标签: elasticsearch elasticsearch-painless