📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入

版本: 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;
 }