Elasticsearch top hits aggregation not working as expected.

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Elasticsearch top hits aggregation not working as expected.

abhishek.guruvayya@gmail.com
This post has NOT been accepted by the mailing list yet.
I am running the below query and want to retrieve top hits per bucket. But I see multiple docs per bucket in few cases. I want only one document per bucket returned. Can some one review the query and suggest.

  SearchResponse sr=client.prepareSearch(versionIndexName).setTypes(versionIndexType).setQuery(Quer
    yBuilders.boolQuery().must(QueryBuilders.rangeQuery("indexDate").lte(givenTime)))
               .addAggregation(AggregationBuilders.terms("form.id").field("form.id").size(0)
                  .subAggregation(AggregationBuilders.topHits("top").setExplain(true).setSize(1)
.setFrom((size*index)).addSort(SortBuilders.fieldSort("indexDate")
    .order(SortOrder.DESC)).setFetchSource(true))).execute().actionGet();

STEPS in the query:

Filter by indexDate less than or equal to a given date.
aggregate based on formId. Forming buckets per formId.
Sort in descending order and return top hit result per bucket.