Sort with dedupe?

I'd like to return a user-defined number of hits ordered by date (desc) and deduped.

If I don't dedupe, my query works fine. However, when I use the aggregator with top-hits subaggregation my resulting buckets are NOT a deduped version of my results hits. Can someone tell me what I'm doing wrong (or the best way to do this)?

SearchRequestBuilder srb = client.prepareSearch()
   .setIndices("indexA")
   .setScroll(new TimeValue(60000))
   .setQuery(builder)
   .addAggregation(AggregationBuilders.terms("docs")
         .field("dedupId")
         .subAggregation(AggregationBuilders
               .topHits("top_hits")
               .setSize(1)
               .addSort("orderDTS",sortOrder.DESC)))
    .addSort("orderDTS", SortOrder.DESC)
    .setFrom(0)
    .setSize(maxNumResults);