TermsBuilder termsBuilder = AggregationBuilders.terms("events")
.field("eventId").include(eventIds)
FilterAggregationBuilder filterAggregationBuilder = AggregationBuilders.filter("hit")
.filter(QueryBuilders.termQuery("hit", "1"))
termsBuilder.subAggregation(filterAggregationBuilder)
termsBuilder.subAggregation(AggregationBuilders.terms("hitPunish").field("hitPunish")
.size(0)
.order(Order.term(true)))
termsBuilder.subAggregation(AggregationBuilders.terms("hitExps").field("hitExps")
.size(0)
.order(Order.term(true)))
RangeQueryBuilder nowRangeQuery = QueryBuilders.rangeQuery("requestTime")
.gte(1486921330000L)
.lte(1486921457000L)
.format("epoch_millis")
RangeQueryBuilder yoyRangeQuery = QueryBuilders.rangeQuery("requestTime")
.gte(1486921457000L)
.lte(1486947847000L)
.format("epoch_millis")
RangeQueryBuilder momRangeQuery = QueryBuilders.rangeQuery("requestTime")
.gte(1486947847000L)
.lte(1486947999000L)
.format("epoch_millis")
RangeQueryBuilder[] rangeQueryBuilders = new RangeQueryBuilder[] {nowRangeQuery, yoyRangeQuery, momRangeQuery}
MultiSearchRequestBuilder multiSearchRequestBuilder = client.prepareMultiSearch()
for(RangeQueryBuilder rangeQueryBuilder: rangeQueryBuilders) {
SearchRequestBuilder searchRequestBuilder =
client.prepareSearch("minos2log*")
.setQuery(rangeQueryBuilder)
.addAggregation(termsBuilder)
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
.setSize(0)
multiSearchRequestBuilder.add(searchRequestBuilder)
}
MultiSearchResponse multiSearchResponse =multiSearchRequestBuilder.execute().actionGet()
return multiSearchResponse.toString()