Hello Darin , This is the wrong approach to do this. You can only sort per document and not per nested document and recieve output as documents and not as nested documents. So i would rather go for parent child approach.
That being said , what you asked is actually possible with little tweaking on client side. - http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html#_using_function_score So a function score query can has a score_mode of min or max. This means that if we give the field reward as the score value and score_mode , it will take the highest value per doc as the score. With this , you can get the top 10 documents bearing top 10 rating. Once you receive this you need to take out all ratings and do a sort again and then find the top 10 ratings. Possibility is that a single document might contain top 2 good reviews. With this i believe you might need to turn include_in_parent on. Thanks Vineeth On Tue, Jul 22, 2014 at 8:15 AM, Darin Amos <[email protected]> wrote: > Hi Everyone, > > I am looking for a little guidance on how to setup my indexes to support > sorting a nested array. To give a simple example, we have an index of > products in our index, below is a dummy example document: > > /products/product/<partnumber> > > { > "name":"Toaster", > "desc":"For making toast", > "price":29.99, > "reviews":[ > { > "rating" : 5, > "comment" : "works great!" > }, > { > "rating" : 1, > "comment" : "Ugh!!" > }, > { > "rating" : 3, > "comment" : "Meh" > } > ] > } > > > I would like to be able to query for product documents, but be able to > sort the reviews array based on the rating. A customer could ask to see the > first 10 best reviews, or the worst 5 reviews for example. Is this > possible? Is this possible if the reviews are in a separate index and I > execute a join query? > > Any information or guidance would be extremely helpful! > > Thanks! > > Darin > > -- > 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/500b16ff-b00f-44a9-a238-9c7a09432bfa%40googlegroups.com > <https://groups.google.com/d/msgid/elasticsearch/500b16ff-b00f-44a9-a238-9c7a09432bfa%40googlegroups.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 [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/CAGdPd5%3DxMYAQfaZAzx7JyuHvAuBb4%3DZ9XBPyMkp_1G9uWEOdvA%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
