Количество определенных элементов во вложенном списке - PullRequest
0 голосов
/ 02 апреля 2019

Документ Elastic имеет такую ​​структуру:

...
"somefield": "somevalue",
"orders": [{
        "version": 1,
        "statusCode": 1
    }, {
        "version": 1,
        "statusCode": 1
    }, {
        "version": 2,
        "statusCode": 2
    }, {
        "version": 3,
        "statusCode": 5
    }, {
        "version": 3,
        "statusCode": 6
    }
]
...

"orders" - это вложенный список.Для вычисления размера списка я использую встроенный скетчпинг:

"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

1 Ответ

0 голосов
/ 02 апреля 2019

Я нашел одно из решений безболезненно:

def count = 0;
for (item in params._source.orders){
if (item.statusCode != 5 && item.statusCode != 6) {
count++; }}
return count < 4;
...