Global direction: Parent-Child: Grouping and Sorting

Hi all,

I have a question regarding grouping and sorting - I can give complete gist
examples, but would like to check first the overall perspective on this -
am I on the right track, do I miss something, what will be the future
direction on this.

My Usecase: I have a lot of press articles, some of them are very similar
in content. I have to provide a search interface, that groups these
duplets, while giving the user a lot of search possibilities on article
content / meta data.

I decided to create a parent child mapping (parent: group, child: article)
for this for the following reasons:

  • the grouping will change over time: new articles are added constantly,
    and I do not want to reindex a lot of stuff
  • articles have their own visibility restrictions, but should be indexed up
  • I strive for simple pagination and do not want to collect groups without
    knowing how many child documents I have to fetch

My current search strategy has two stages
(1) search with a has_child query for groups
(2) resolve all children for the groups with a has_parent query

The problem is, that I need to sort the parents/groups (result of the
first has_child query) by values of the children (articles). As I
understand, this is currently not possible.

The only solution around is to wrap the has_child query with a function
score and use that score for the sorting. Something like (bold the relevant

curl -XGET 'http://localhost:9200/index/group/_search?pretty=1' -d '{
"query" : {
"has_child" : {
"query" : {
"function_score" : {
"query" : {
"functions" : [ {
"script_score" : {
"script" : "doc['article.publicationNameSort'].value"
} ],
"boost_mode" : "replace"
"child_type" : "article",
"score_type" : "max"
"sort" : [ {
"_score" : { }
} ]

The problem in my use case is, that the sort often needs more than one
or even several string values to sort on. (com)pressing these to a
single double is not always possible.

My questions

(A) will there be sorting support for has_child queries in the (near)

There are different comments on this in the community. Is this easy (as
supported by lucene) or a very high hanging fruit?

*(B) is there an other way to achieve the grouping *

The grouping could be solved by doing by hand - getting child values with a
simple query, scanning results, gathering some type of 'parent/group' field
and returning the result when enough groups have been resolved. A nightmare
regarding pagination. This looks a lot look the problems Elasticsearch
already has solved in parent-child queries / top-children query.

All other comments and suggestions are very appreciated.

Best regards, Wolfgang

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
To view this discussion on the web visit
For more options, visit