我试图从文档中的数组中摄取网页的内容
{ "myDocument" : {
"author" : "Joe",
......
"linkedPages" : [
{ "name" : "googly",
"creator" : "SoInSo",
"url": "http://blah.com/content",
"pageContent" : "Base64EncodedStuff...."
},
......
],
"tags" : [
....
]
}
我正在使用摄取管道
PUT _ingest/pipeline/attachment
{
"description" : "Extract attachment information from arrays",
"processors" : [
{
"foreach": {
"field": "linkedPages",
"processor": {
"attachment": {
"target_field": "_ingest._value.readableAndSearchable",
"field": "_ingest._value.pageContent",
"ignore_failure" : true
}
}
}
}
]
}
这样可以正常工作,甚至可以在pageConent字段中查找错误数据。现在的问题是linkedPages字段是可选的。如果我在没有任何linkedPages的情况下发送文档,则Elasticsearch会抛出IllegalArgumentException。 我将ObjectMapper serializationInclustion设置为Inclusion.NON_NULL,它可以很好地从JSON中删除大量空字段,但在这种情况下会导致错误。
Foreach处理器有没有忽略失败?
答案 0 :(得分:0)
这里晚了几年,但从6.4版开始,您可以像这样为dispatch_async(dispatch_get_main_queue(), ^{
[NSObject cancelPreviousPerformRequestsWithTarget:self];
});
处理器指定ignore_missing
配置选项:
foreach
此方法应跳过所有未指定PUT _ingest/pipeline/attachment
{
"description" : "Extract attachment information from arrays",
"processors" : [
{
"foreach": {
"field": "linkedPages",
"processor": {
"attachment": {
"target_field": "_ingest._value.readableAndSearchable",
"field": "_ingest._value.pageContent",
"ignore_failure" : true
}
},
"ignore_missing": true
}
}
]
}
字段的情况,从而避免出现错误。
相反,如果您希望发生故障,但希望忽略它,则可以在linkedPages
处理器上从6.5版开始指定ignore_failure
选项。
此外,如果您希望允许失败但将错误作为流水线的一部分来处理,则可以在foreach
配置选项(自6.5版开始)中指定处理器数组。
相关文档:
https://www.elastic.co/guide/en/elasticsearch/reference/6.5/foreach-processor.html https://www.elastic.co/guide/en/elasticsearch/reference/6.5/handling-failure-in-pipelines.html