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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 [email protected].
> 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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elasticsearch/CAL6Z4j5ANh6%2B8ieH9C6YeODm_0JPmMvdxfTa7WQBYVYnqtfpjA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to