Reputation: 45
I am using filters aggregation like so
"aggs": {
"streams": {
"filters": {
"filters": {
"week1": {
'range': {
'date': {
'gte': start_date1,
'lte': end_date1,
"format": "YYYY-MM-dd'T'HH:mm:ss"
}
}
},
"week2": {
'range': {
'date': {
'gte': start_date2,
'lte': end_date2,
"format": "YYYY-MM-dd'T'HH:mm:ss"
}
}
}
}
},
"aggs": {
"streamCountAll": {"sum": {"field": "streamCount"}},
"deviceName": {
"terms": {
"field": "deviceName",
"size": 30,
},
"aggs": {
"streamCount": {"sum": {"field": "streamCount"}}
}
},
This attempts to find streams for two separate weeks for comparison. Now I want to add version number to the mix. Instead of week1 vs week2, I am trying to do week1 version A vs week 1 version B. My query looks like
"aggs": {
"streams": {
"filters": {
"filters": {
"week1": {
'terms' : {'version': [109, 107]},
'range': {
'date': {
'gte': start_date1,
'lte': end_date1,
"format": "YYYY-MM-dd'T'HH:mm:ss"
}
}
},
"week2": {
'range': {
'date': {
'gte': start_date2,
'lte': end_date2,
"format": "YYYY-MM-dd'T'HH:mm:ss"
}
}
}
}
},
"aggs": {
"streamCountAll": {"sum": {"field": "streamCount"}}
However I am getting an error "reason": "No query registered for [version]"
Can any one help me out here, with adding multiple criteria into the filters aggregation buckets.
Upvotes: 3
Views: 2736
Reputation: 217544
You need to bring a bool/filter
query into the mix like this:
"aggs": {
"streams": {
"filters": {
"filters": {
"week1": {
"bool": {
"filter": [
{ 'terms' : {'version': [109, 107]}},
{ 'range': {
'date': {
'gte': start_date1,
'lte': end_date1,
"format": "YYYY-MM-dd'T'HH:mm:ss"
}
}
}
]
}
},
"week2": {
"bool": {
"filter": [
{ 'terms' : {'version': [110, 108]}},
{ 'range': {
'date': {
'gte': start_date2,
'lte': end_date2,
"format": "YYYY-MM-dd'T'HH:mm:ss"
}
}
}
]
}
}
}
},
"aggs": {
"streamCountAll": {"sum": {"field": "streamCount"}}
Upvotes: 6