es 多个字段 group by
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | { "size" : 0 , "aggregations" : { "createDate" : { "date_histogram" : { "field" : "createDate" , "format" : "yyyy-MM-dd" , "time_zone" : "+08:00" , "calendar_interval" : "1d" , "offset" : 0 , "order" : { "_key" : "asc" }, "keyed" : false , "min_doc_count" : 1 }, "aggregations" : { "userAccount" : { "terms" : { "field" : "userAccount" } } } } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | GET 索引name/索引type/_search { "size" : 0 , "aggregations" : { "字段一的结果命名" : { "terms" : { "field" : "要group的字段" }, "aggregations" : { "字段二的结果命名" : { "terms" : { "field" : "要group的字段" } } } } } } |
代码实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | public void demo1(RestHighLevelClient client) { // group TermsAggregationBuilder oneBuilder = AggregationBuilders.terms( "one" ).field( "flowCode.keyword" ); TermsAggregationBuilder twoBuilder = AggregationBuilders.terms( "two" ).field( "stepExecuteId" ); oneBuilder.subAggregation(twoBuilder); // search SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); searchSourceBuilder.aggregation(oneBuilder); // request SearchRequest searchRequest = new SearchRequest( "index" ); searchRequest.types( "type" ); searchRequest.source(searchSourceBuilder); try { SearchResponse response = client.search(searchRequest, RequestOptions.DEFAULT); Terms oneTerm = (Terms) response.getAggregations().asMap().get( "one" ); for (Terms.Bucket bucket : oneTerm.getBuckets()) { System.out.println( "one下面的" + bucket.getKey() + ", count是: " + bucket.getDocCount()); Terms twoTerm = (Terms) bucket.getAggregations().asMap().get( "two" ); for (Terms.Bucket twoTermBucket : twoTerm.getBuckets()) { System.out.println( "two下面的" + twoTermBucket.getKey() + ", count是: " + twoTermBucket.getDocCount()); } } } catch (Exception ex) { ex.printStackTrace(); } } |
参考:https://blog.csdn.net/cainiao1412/article/details/120876972
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端