I realized this could be simplified by simply leaving out the 'value_count' aggregation within the reverse_nested, as that information is already provided by the included 'doc_count'. I guess it can't be simplified much beyond this.
Would it be worth including this information by default when doing a nested agg (doc_count on the reverse_nested?). It seems pretty useful, but not sure about performance implications of always doing it. An option nested_aggs to return doc_count of the parent would be a nice to have for sure! On Thu, Jul 17, 2014 at 11:46 AM, Kallin Nagelberg < [email protected]> wrote: > I'm trying to build a query to aggregate on some fields in a nested > document, but instead of returning the count of the nested documents for > each aggregation, I'd like to know the number of root objects. > > IE., > > I have a mapping like (from the docs): > > "product" : { > "properties" : { > "resellers" : { > "type" : "nested" > "properties" : { > "name" : { "type" : "string" }, > "price" : { "type" : "double" } > } > } > } > } > > > Now let's say I want to know how many products have each reseller name. > That's not straight forward as far as I can tell. > > If I do an agg like: > > "aggs": { > "resellers": { > "nested": { > "path": "resellers" > }, > "aggs": { > "names": { > "terms": { > "field": "resellers.name" > ... > > > I'll get back something like ( assuming that each product has many > resellers): > > hits: 20, > aggregations: { > resellers: { > doc_count: 100, > names : { > buckets: [ > { > key: 'name1' > doc_count: 50 > }, > { > key: 'name2', > doc_count: 50 > } > ] > }}} > > > So, its aggregating on the nested objects, ie there are 100 reseller > nested docs, and in them 50 have name1, 50 have name2. > > What I'm interested in though is how many products have resellers with > name 1 and name 2. > > IE, it should say something like, > > - 15 products have a reseller w/ name name1 > - 10 products have a reseller w/ name name2 > > It looks like I can do this by putting a reverse nested aggregation below > my names agg, then do a value_count aggregation on the ID of the root > object. This seems kind of round about and I wonder if I'm missing an > easier way. Any suggestions would be appreciated ! > > Thanks, > -Kal > > > > > > > > > > > -- > You received this message because you are subscribed to a topic in the > Google Groups "elasticsearch" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/elasticsearch/5f9iHPo5-Ps/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/elasticsearch/1e895c15-accc-4638-b19c-ec1d263ca53b%40googlegroups.com > <https://groups.google.com/d/msgid/elasticsearch/1e895c15-accc-4638-b19c-ec1d263ca53b%40googlegroups.com?utm_medium=email&utm_source=footer> > . > 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 [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/CAC7UURF8%3D_1-J4LyCADUOnOQ82Bc5dt_%3DYTAmAYV9isXXt6UJg%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
