I beg to differ, aggregations work with the root documents returned by query, so they do not work under a global context. :) I guess under my proposed vision the issue would be then how to have aggregations on documents returned with a nested filter, but still maintain all the nested documents. A pseudo global nested context. The sounds more painful than returning all the nested documents.
Cheers, Ivan On Tue, Nov 11, 2014 at 5:30 PM, Adrien Grand < adrien.gr...@elasticsearch.com> wrote: > Hi Ivan, > > You indeed ned to repeat the filter under a nested aggregation to make it > work. If we ever allow queries to return nested documents, I agree that > filters should not be repeated under aggs, but since now queries only > return the root documents, I think it is actually consistent to return all > nested docs under a nested aggregation, and not only those that matched a > (potential) nested query. I also like the fact that it allows aggregations > to not know about the query. > > > On Tue, Nov 11, 2014 at 5:27 PM, Ivan Brusic <i...@brusic.com> wrote: > >> I suddenly remembered when using facets that I had to apply the same >> query filter as a facet filter with the join option disabled. Turns out it >> is somewhat identical with aggregations. My problem was that the scope of >> my nested aggregation with not under the scope of the filter aggregation. I >> hope #3022 and related issues can bring about less ambiguous aggregations. >> Nested aggregations on pre-filtered nested documents should work as is. If >> not, the global scope aggregation should be used. >> >> -- >> >> Ivan >> >> >> On Mon, Nov 10, 2014 at 3:43 PM, Ivan Brusic <i...@brusic.com> wrote: >> >>> Reproducible gist: https://gist.github.com/brusic/81e1552ffd49a1f6a7aa >>> >>> Surely I cannot be the only one to have encountered this issue. >>> >>> -- >>> Ivan >>> >>> On Mon, Nov 10, 2014 at 12:53 PM, Ivan Brusic <i...@brusic.com> wrote: >>> >>>> Is it possible to aggregate only on the nested documents that are >>>> returned by a (filtered) query? For what I can tell when using a nested >>>> aggregation, it will function on all nested documents of the parent >>>> documents whose nested document satisfy a nested query/filter. Did that >>>> make sense? :) Is this the same limitation as issue #3022? I know that >>>> number by heart by now. >>>> >>>> For example, I have 3 simple documents, where the nstd object is >>>> defined as nested: >>>> >>>> { >>>> "name" : "foo", >>>> "nstd" : [ >>>> { >>>> "ID" : 1 >>>> } >>>> ] >>>> } >>>> ' >>>> >>>> { >>>> "name" : "bar", >>>> "nstd" : [ >>>> { >>>> "ID" : 2 >>>> } >>>> ] >>>> } >>>> ' >>>> >>>> { >>>> "name" : "baz", >>>> "nstd" : [ >>>> { >>>> "ID" : 1 >>>> }, >>>> { >>>> "ID" : 2 >>>> } >>>> ] >>>> } >>>> ' >>>> >>>> I then execute a simple nested query: >>>> >>>> "query": { >>>> "filtered": { >>>> "query": { >>>> "match_all": {} >>>> }, >>>> "filter": { >>>> "nested": { >>>> "path": "nstd", >>>> "filter": { >>>> "term": { >>>> "nstd.ID": 1 >>>> } >>>> } >>>> } >>>> } >>>> } >>>> } >>>> >>>> If I aggregate on the nstd.ID field, I will always get back results for >>>> nested documents that were excluded by the filter: >>>> >>>> "buckets": [ >>>> { >>>> "key": 1, >>>> "doc_count": 2 >>>> }, >>>> { >>>> "key": 2, >>>> "doc_count": 1 >>>> } >>>> ] >>>> >>>> Since the ID:2 field does not match the filter, it should not be >>>> returned with the aggregation. I have tried using a filter aggregation with >>>> the same filter used in the filtered query, but I receive the same results. >>>> >>>> Cheers, >>>> >>>> Ivan >>>> >>> >>> >> -- >> 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+unsubscr...@googlegroups.com. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/elasticsearch/CALY%3DcQCqV%2BVtExWQ%2B15V6ywZ6pMog91ajB%3DEyN81ueditLGZKg%40mail.gmail.com >> <https://groups.google.com/d/msgid/elasticsearch/CALY%3DcQCqV%2BVtExWQ%2B15V6ywZ6pMog91ajB%3DEyN81ueditLGZKg%40mail.gmail.com?utm_medium=email&utm_source=footer> >> . >> >> For more options, visit https://groups.google.com/d/optout. >> > > > > -- > Adrien Grand > > -- > 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+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/elasticsearch/CAL6Z4j5ANh6%2B8ieH9C6YeODm_0JPmMvdxfTa7WQBYVYnqtfpjA%40mail.gmail.com > <https://groups.google.com/d/msgid/elasticsearch/CAL6Z4j5ANh6%2B8ieH9C6YeODm_0JPmMvdxfTa7WQBYVYnqtfpjA%40mail.gmail.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 elasticsearch+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/CALY%3DcQC3MuY6NGq%3Du%3DDUmXpH4X0tRoK0TQoABHLtdYXrQb9ygw%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.