版本: 7.3-8.9
简而言之,当Elasticsearch摄取管道中的foreach处理器尝试处理空列表时,会发生此错误。foreach处理器旨在对列表中的每个项执行指定的操作。如果列表为空,它就无法执行任何操作,因此会抛出错误。要解决此问题,您可以通过在foreach处理器之前添加检查来确保列表永远不会为空,或者通过使用"ignore_failure"选项在foreach处理器内处理空列表场景。这将允许管道即使在列表为空的情况下也能继续处理。
日志上下文 #
日志"foreach object [{}] was an empty list; could not run any action"的类名是 ActionWrapper.java。 我们从Elasticsearch源代码中提取了以下内容,供那些寻求深入理解的人参考:
Listresults = new ArrayList<>();
Object object = ObjectPath.eval(path; toMap(ctx));
int runs = 0;
if (object instanceof Collectioncollection) {
if (collection.isEmpty()) {
throw new ElasticsearchException("foreach object [{}] was an empty list; could not run any action"; path);
} else {
for (Object o : collection) {
if (runs >= maxIterations) {
break;
}





