elasticsearch,Groovy,elasticsearch" /> elasticsearch,Groovy,elasticsearch" />

Elasticsearch-在函数和访问字段负载中使用groovy脚本

Elasticsearch-在函数和访问字段负载中使用groovy脚本,groovy,elasticsearch,Groovy,elasticsearch,我试图理解在使用groovy脚本时访问有效负载的最佳方式是什么 我想这样做: sum = 0; categories = doc['category'].values; for (category in categories){ sum += category.payload } return sum; 编辑: 多亏了@Val和@leeh,我才能够真正访问有效载荷。但建议的解决方案是使用_索引,这不是我想要的,_索引允许访问索引范围内的统计数据,而不是特定的文档 我想检查每一个文档,

我试图理解在使用groovy脚本时访问有效负载的最佳方式是什么

我想这样做:

sum = 0;
categories  = doc['category'].values; 
for (category in categories){
   sum += category.payload
}
return sum;
编辑: 多亏了@Val和@leeh,我才能够真正访问有效载荷。但建议的解决方案是使用_索引,这不是我想要的,_索引允许访问索引范围内的统计数据,而不是特定的文档

我想检查每一个文档,获取它的有效载荷,然后用常数乘以它

执行此操作时:_index['category'].get('term',_有效载荷)我将获得“term”的所有有效载荷的列表,这不是我要寻找的


那么,有没有一种方法可以从文档范围访问字段有效负载呢?

请查看文档以了解更多信息 它显示了访问字段有效载荷的示例

在这里复制最后一个示例:

Example: sums up all payloads for the term foo.

termInfo = _index['my_field'].get('foo',_PAYLOADS);
score = 0;
for (pos in termInfo) {
    score = score + pos.payloadAsInt(0);
}
return score;

您可以使用和
\u index
上下文变量来实现这一点

Groovy在这里提供了一个漂亮的单行程序:

return _index['category'].get('term', _PAYLOADS).sum {it.payloadAsInt(0)}

实际上,当我考虑它时,它并不能解决我的问题:——||索引让我可以访问索引范围内的统计信息,而不是特定文档的统计信息。我想处理每一个文档,获取它的有效载荷,然后用常数乘以它。执行此操作时:_index['category'].get('term',_有效载荷)我将获得“term”的所有有效载荷的列表,这不是我要寻找的。你怎么认为?如何从文档范围而不是索引访问文档的有效负载?嗯,让我考虑一下。同时,你应该根据刚才的评论更新你的问题,以澄清你的期望。你有什么想法吗@瓦尔