栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Elasticsearch(es)根据某个字段聚合分组,然后每组中取一个

Elasticsearch(es)根据某个字段聚合分组,然后每组中取一个

 

    @Autowired
    JestClient jestClient;

 

  SearchResult searchResult = jestClient.execute(search);

 

        // 聚合分组
        TermsAggregationBuilder groupby_attr = AggregationBuilders.terms("field_Agg").field("field");

        // 仅显示每一组中第一个document
        TopHitsAggregationBuilder suBuilder = AggregationBuilders.topHits("sub_agg").size(1);
        groupby_attr.subAggregation(suBuilder);

        searchSourceBuilder.aggregation(groupby_attr);

            //按照专辑id对搜索结果进行分组,并且从每组中取出一个
            JsonArray listt = searchResult.getAggregations().getTopHitsAggregation("field_Agg").getJsonObject()
                    .getAsJsonArray("buckets");

            List vvList = new ArrayList();

            for (JsonElement jsonElement : listt) {

                JsonObject ss = jsonElement.getAsJsonObject().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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/672693.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号