@3ygun
To answer your first need, you could do that with Elastic Stack, using Parent/Child model.
In Kibana, when you create your visualization, you can copy that in "search bar" :
{
"has_parent": {
"parent_type": "kitchen",
"query": {
"query_string": {
"query": "type:old"
}
}
}
}
And then make a term aggregation based on "model" field, then order by "custom metric", which is sum of 'count' field.
This works for me in Kibana 4.6.3 and Kibana 5.0.1