elasticsearch top命中聚合java API查询

时间:2016-04-23 00:09:23

标签: java elasticsearch spring-data-elasticsearch

我正在运行以下查询,并想要检索每个桶的热门点击量。但在少数情况下,我看到每个桶有多个文档。我希望每个桶只返回一个文档。有人可以查看查询并建议。

        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();

查询中的步骤:

  1. 按indexDate过滤小于或等于给定日期。
  2. 基于formId聚合。每个formId。
  3. 形成桶
  4. 按降序排序并返回每个桶的最高匹配结果。

0 个答案:

没有答案