-
Mantas Simkus authoredMantas Simkus authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
ReverseNested.md 1.57 KiB
Reverse Nested Aggregation
More info about reverse nested aggregation is in the official elasticsearch docs
A special single bucket aggregation that enables aggregating on parent docs from nested documents.
Simple example
{
"aggregations": {
"comments": {
"nested": {
"path": "comments"
},
"aggregations": {
"top_usernames": {
"terms": {
"field": "comments.username"
},
"aggregations": {
"comment_to_issue": {
"reverse_nested": {},
"aggregations": {
"top_tags_per_comment": {
"terms": {
"field": "tags"
}
}
}
}
}
}
}
}
}
}
And now the query via DSL:
$tagsTermsAggregations = new TermsAggregation('top_tags_per_comment', 'tags');
$reverseNestedAggregation = new ReverseNestedAggregation('comment_to_issue');
$reverseNestedAggregation->addAggregation($tagsTermsAggregations);
$usernameTermsAggregation = new TermsAggregation('top_usernames', 'comments.username');
$usernameTermsAggregation->addAggregation($reverseNestedAggregation);
$nestedAggregation = new NestedAggregation('comments', 'comments');
$nestedAggregation->addAggregation($usernameTermsAggregation);
$search = new Search();
$search->addAggregation($nestedAggregation);
$queryArray = $search->toArray();