es 分组后排序 再分页
es 分组聚合分页排序
·
//获取最近时间的一条数据
TopHitsAggregationBuilder maxTime = AggregationBuilders.topHits(maxField).sort(maxField, SortOrder.DESC).size(1);
//根据groupField分组
TermsAggregationBuilder termsAggregationBuilder =
//首先是分组 AggregationBuilders.terms(groupField).field(groupField).subAggregation(maxTime).
size(10000);
//获取最大的时间为了排序去做的聚合
MaxAggregationBuilder field = AggregationBuilders.max("maxSort").field("msgSendTime");
termsAggregationBuilder.subAggregation(field);
//这个地方的排序必须要用 一个number类型的聚合去排序
FieldSortBuilder fieldSortBuilder=new FieldSortBuilder("maxSort").order(SortOrder.DESC);
termsAggregationBuilder.subAggregation(new BucketSortPipelineAggregationBuilder("pageAndSort",
Lists.newArrayList(fieldSortBuilder)).from(msgListReqDTO.getStartIndex()).size(msgListReqDTO.getPageSize()));
//设置 searchQuery
searchSourceBuilder.query(boolQueryBuilder).aggregation(termsAggregationBuilder).
sort(maxField, SortOrder.DESC).size(0);
request.searchType(SearchType.DEFAULT).source(searchSourceBuilder);
GET intelligent-core_message_es_index/_search
{
"size": 0,
"query": {
"bool": {
"must": [{
"match": {
"sessionStatus": {
"query": "END"
}
}
}, {
"match": {
"userId": {
"query": "20220822151440349572086684327936"
}
}
}],
"must_not": [{
"match": {
"sendRole": {
"query": "SYSTEM_VISITOR"
}
}
}, {
"terms": {
"sendRole": ["SYSTEM_VISITOR", "SYSTEM_USER"]
}
}],
"adjust_pure_negative": true,
"boost": 1.0
}
},
"sort": [{
"msgSendTime": {
"order": "desc"
}
}],
"aggregations": {
"visitorId": {
"terms": {
"field": "visitorId",
"size": 10000,
"order": [{
"_count": "desc"
}, {
"_key": "asc"
}]
},
"aggregations": {
"msgSendTime": {
"top_hits": {
"from": 0,
"size": 1,
"sort": [{
"msgSendTime": {
"order": "desc"
}
}]
}
},
"maxSort": {
"max": {
"field": "msgSendTime"
}
},
"pageAndSort": {
"bucket_sort": {
"sort": [{
"maxSort": {
"order": "desc"
}
}],
"from": 15,
"size": 5
}
}
}
}
}
}
更多推荐
已为社区贡献2条内容
所有评论(0)