I want to filter groups in nested filed stats
, by second value (here I marked it as value_filtered
). stats
cointains of 4 objects. I want all groups with second item in array greater than 0 (value_filtered > 0
). Below example of document:
{
"group_name": "Group_1",
"date": "2020-05-20",
"stats" : [
{
"name_en" : "xxx",
"value" : 45
},
{
"name_en" : "value_filtered",
"value" : 0
},
{
"name_en" : "vvv",
"value" : 20
},
{
"name_en" : "zzz",
"value" : 0.666
}
]
}
My approach was to use filter script
, however from some reasons it does not work. But the same script not in filter, but in scripting field
works - below sample of my code:
query = {
'size': 100,
'_source': {
'include': ['group_name']
},
"query": {
"bool": {
"filter": [
{
'term': {
'date': '2020-05-20'
}
}
]
}
},
'script_fields': {
'stats': {
'script': {
'lang': 'painless',
'source': """
int value_filtered = (int) params._source['metrics'][1].value;
return value_filtered > 0;
"""
}
}
}
}