Elastic文档的结构如下:
...
"somefield": "somevalue",
"orders": [{
"version": 1,
"statusCode": 1
}, {
"version": 1,
"statusCode": 1
}, {
"version": 2,
"statusCode": 2
}, {
"version": 3,
"statusCode": 5
}, {
"version": 3,
"statusCode": 6
}
]
...
“订单” 是一个嵌套列表。我使用内联提示来计算列表的大小,如下所示:
"params._source.orders.size() < 4"
我必须添加一个条件来计算statusCode不是5而不是6的订单数量。Linq看起来像这样:
...orders.Where(o=>!(new[] {5, 6}).Contains(o.statusCode)).size()...
如何用Painless或Groovy编写脚本?
这会导致异常:
params._source.orders.count { it -> it.statusCode == 1 } < 4
答案 0 :(得分:0)
我在Painless中找到了一种解决方案:
def count = 0;
for (item in params._source.orders){
if (item.statusCode != 5 && item.statusCode != 6) {
count++; }}
return count < 4;