Elasticsearch(es)根据某个字段聚合分组,然后每组中取⼀
个
@Autowired
JestClient jestClient;
SearchResult searchResult = ute(search);
// 聚合分组
TermsAggregationBuilder groupby_attr = s("field_Agg").field("field");
// 仅显⽰每⼀组中第⼀个Document
TopHitsAggregationBuilder suBuilder = pHits("sub_agg").size(1);
groupby_attr.subAggregation(suBuilder);
groupby分组searchSourceBuilder.aggregation(groupby_attr);
/
/按照专辑id对搜索结果进⾏分组,并且从每组中取出⼀个
JsonArray listt = Aggregations().getTopHitsAggregation("field_Agg").getJsonObject()
.getAsJsonArray("buckets");
List<Bean> vvList = new ArrayList<Bean>();
for (JsonElement jsonElement : listt) {
JsonObject ss = AsJsonObject().getAsJsonObject("sub_agg").getAsJsonObject("hits")
.getAsJsonArray("hits").get(0).getAsJsonObject().getAsJsonObject("_source");
ESDO vv = new Gson().fromJson(ss, Bean.class);
vvList.add(vv);
}
FR:徐海涛(hunk xu)
QQ技术交流:386476712
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论