Nested list aggregation

I have documents like this in my index:

{
"time": "2015-03-24T08:24:55.9056988",
"msg": {
"corrupted": false,
"stat": {
"fileSize": 10186,
"stages": [
{
"stage": "queued",
"duration": 420
},
{
"stage": "validate",
"duration": 27
},
{
"stage": "cacheFile",
"duration": 87
},
{
"stage": "sendResult",
"duration": 1332
}
]
}
}
}

I'd like to calculate sum(msg.stat.stages.duration) grouped by
msg.stat.stages.stage.
I tried the following:

{
"size": 0,
"aggs":
{
"1":
{
"terms": { "field": "msg.stat.stages.stage" },
"aggs":
{
"2":
{
"nested": { "path": "stat.stages" },
"aggs":
{
"3": {
"sum": {
"field": "stat.stages.duration"
}
}
}
}
}
}
},
"query": {
"match_all": {}
}
}

and got:

{
"took": 6,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 0,
"hits": []
},
"aggregations": {
"1": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"2": {
"doc_count": 0
},
"key": "cachefile",
"doc_count": 1
},
{
"2": {
"doc_count": 0
},
"key": "queued",
"doc_count": 1
},
{
"2": {
"doc_count": 0
},
"key": "sendresult",
"doc_count": 1
},
{
"2": {
"doc_count": 0
},
"key": "validate",
"doc_count": 1
}
]
}
}
}

which is not what I expected. Any ideas?

Thanks!

--
You received this message because you are subscribed to the Google Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elasticsearch+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/22173f85-6d94-4b29-a9f5-b13c46a4850d%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Hi,

If you define "stages" as nested type, query like this should work:

{
"query": {
"match_all": {}
},
"aggs": {
"0": {
"nested": {
"path": "msg.stat.stages"
},
"aggs": {
"1": {
"terms": {
"field": "stage"
},
"aggs": {
"2": {
"sum": {
"field": "duration"
}
}
}
}
}
}
}
}

Masaru

On March 24, 2015 at 21:26:33, Vasily Kirichenko (vaskir@gmail.com) wrote:

I have documents like this in my index:

{
"time": "2015-03-24T08:24:55.9056988",
"msg": {
"corrupted": false,
"stat": {
"fileSize": 10186,
"stages": [
{
"stage": "queued",
"duration": 420
},
{
"stage": "validate",
"duration": 27
},
{
"stage": "cacheFile",
"duration": 87
},
{
"stage": "sendResult",
"duration": 1332
}
]
}
}
}

I'd like to calculate sum(msg.stat.stages.duration) grouped by msg.stat.stages.stage.
I tried the following:

{
"size": 0,
"aggs":
{
"1":
{
"terms": { "field": "msg.stat.stages.stage" },
"aggs":
{
"2":
{
"nested": { "path": "stat.stages" },
"aggs":
{
"3": {
"sum": {
"field": "stat.stages.duration"
}
}
}
}
}
}
},
"query": {
"match_all": {}
}
}

and got:

{
"took": 6,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 0,
"hits": []
},
"aggregations": {
"1": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"2": {
"doc_count": 0
},
"key": "cachefile",
"doc_count": 1
},
{
"2": {
"doc_count": 0
},
"key": "queued",
"doc_count": 1
},
{
"2": {
"doc_count": 0
},
"key": "sendresult",
"doc_count": 1
},
{
"2": {
"doc_count": 0
},
"key": "validate",
"doc_count": 1
}
]
}
}
}

which is not what I expected. Any ideas?

Thanks!

You received this message because you are subscribed to the Google Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elasticsearch+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/22173f85-6d94-4b29-a9f5-b13c46a4850d%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elasticsearch+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/etPan.55126f6c.238e1f29.166%40citra-2.local.
For more options, visit https://groups.google.com/d/optout.