-
},
-
“l(fā)ow”: {
-
“type”: “l(fā)ong”
-
},
-
“date”: {
-
“format”: “strict_date_optional_time||epoch_millis”,
-
“type”: “date”
-
},
-
“close”: {
-
“type”: “l(fā)ong”
-
}
-
},
-
“_all”: {
-
“enabled”: false
-
}
-
}
-
}
索引中的全部數(shù)據(jù):
name | age | salary | team | position |
james | 33 | 3000 | cav | sf |
irving | 25 | 2000 | cav | pg |
curry | 29 | 1000 | war | pg |
thompson | 26 | 2000 | war | sg |
green | 26 | 2000 | war | pf |
garnett | 40 | 1000 | tim | pf |
towns | 21 | 500 | tim | c |
lavin | 21 | 300 | tim | sg |
wigins | 20 | 500 | tim | sf |
首先,初始化Builder:
SearchRequestBuilder sbuilder = client.prepareSearch(“player”).setTypes(“player”);
接下來(lái)舉例說(shuō)明各種聚合操作的實(shí)現(xiàn)方法,因?yàn)樵趀s的api中,多字段上的聚合操作需要用到子聚合(subAggregation),初學(xué)者可能找不到方法(網(wǎng)上資料比較少,筆者在這個(gè)問題上折騰了兩天,最后度了源碼才徹底搞清楚T_T),后邊會(huì)特意說(shuō)明多字段聚合的實(shí)現(xiàn)方法。另外,聚合后的排序也會(huì)單獨(dú)說(shuō)明。
1. group by/count
例如要計(jì)算每個(gè)球隊(duì)的球員數(shù),如果使用SQL語(yǔ)句,應(yīng)表達(dá)如下:
select team, count(*) as player_count from player group by team;
ES的java api:
-
TermsBuilder teamAgg= AggregationBuilders.terms( "player_count ").field( “team”);
-
sbuilder.addAggregation(teamAgg);
-
SearchResponse response = sbuilder.execute().actionGet();
2.group by多個(gè)field
例如要計(jì)算每個(gè)球隊(duì)每個(gè)位置的球員數(shù),如果使用SQL語(yǔ)句,應(yīng)表達(dá)如下:
select team, position, count(*) as pos_count from player group by team, position;
ES的java api:
-
TermsBuilder teamAgg= AggregationBuilders.terms( "player_count ").field( “team”);
-
TermsBuilder posAgg= AggregationBuilders.terms( “pos_count”).field( “position”);
-
sbuilder.addAggregation(teamAgg.subAggregation(posAgg));
-
SearchResponse response = sbuilder.execute().actionGet();
3.max/min/sum/avg
例如要計(jì)算每個(gè)球隊(duì)年齡最大/最小/總/平均的球員年齡,如果使用SQL語(yǔ)句,應(yīng)表達(dá)如下:
select team, max(age) as max_age from player group by team;
ES的java api:
-
TermsBuilder teamAgg= AggregationBuilders.terms( "player_count ").field( “team”);
-
MaxBuilder ageAgg= AggregationBuilders.max( “max_age”).field( “age”);
-
sbuilder.addAggregation(teamAgg.subAggregation(ageAgg));
-
SearchResponse response = sbuilder.execute().actionGet();
4.對(duì)多個(gè)field求max/min/sum/avg
例如要計(jì)算每個(gè)球隊(duì)球員的平均年齡,同時(shí)又要計(jì)算總年薪,如果使用SQL語(yǔ)句,應(yīng)表達(dá)如下:
select team, avg(age)as avg_age, sum(salary) as total_salary from player group by team;
ES的java api:
-
TermsBuilder teamAgg= AggregationBuilders.terms( “team”);
-
AvgBuilder ageAgg= AggregationBuilders.avg( “avg_age”).field( “age”);
-
SumBuilder salaryAgg= AggregationBuilders.avg( "total_salary ").field( “salary”);
-
sbuilder.addAggregation(teamAgg.subAggregation(ageAgg).subAggregation(salaryAgg));
-
SearchResponse response = sbuilder.execute().actionGet();
5.聚合后對(duì)Aggregation結(jié)果排序
例如要計(jì)算每個(gè)球隊(duì)總年薪,并按照總年薪倒序排列,如果使用SQL語(yǔ)句,應(yīng)表達(dá)如下:
select team, sum(salary) as total_salary from player group by team order by total_salary desc;
自我介紹一下,小編13年上海交大畢業(yè),曾經(jīng)在小公司待過,也去過華為、OPPO等大廠,18年進(jìn)入阿里一直到現(xiàn)在。
深知大多數(shù)Java工程師,想要提升技能,往往是自己摸索成長(zhǎng)或者是報(bào)班學(xué)習(xí),但對(duì)于培訓(xùn)機(jī)構(gòu)動(dòng)則幾千的學(xué)費(fèi),著實(shí)壓力不小。自己不成體系的自學(xué)效果低效又漫長(zhǎng),而且極易碰到天花板技術(shù)停滯不前!
因此收集整理了一份《2024年Java開發(fā)全套學(xué)習(xí)資料》,初衷也很簡(jiǎn)單,就是希望能夠幫助到想自學(xué)提升又不知道該從何學(xué)起的朋友,同時(shí)減輕大家的負(fù)擔(dān)。
既有適合小白學(xué)習(xí)的零基礎(chǔ)資料,也有適合3年以上經(jīng)驗(yàn)的小伙伴深入學(xué)習(xí)提升的進(jìn)階課程,基本涵蓋了95%以上Java開發(fā)知識(shí)點(diǎn),真正體系化!
由于文件比較大,這里只是將部分目錄截圖出來(lái),每個(gè)節(jié)點(diǎn)里面都包含大廠面經(jīng)、學(xué)習(xí)筆記、源碼講義、實(shí)戰(zhàn)項(xiàng)目、講解視頻,并且會(huì)持續(xù)更新!
如果你覺得這些內(nèi)容對(duì)你有幫助,可以掃碼獲?。。。▊渥ava獲?。?/strong>

最后
面試題文檔來(lái)啦,內(nèi)容很多,485頁(yè)!
由于筆記的內(nèi)容太多,沒辦法全部展示出來(lái),下面只截取部分內(nèi)容展示。
1111道Java工程師必問面試題
MyBatis 27題 + ZooKeeper 25題 + Dubbo 30題:
Elasticsearch 24 題 +Memcached +?Redis 40題:
Spring 26 題+ 微服務(wù) 27題+ Linux 45題:
Java面試題合集:
《一線大廠Java面試題解析+核心總結(jié)學(xué)習(xí)筆記+最新講解視頻+實(shí)戰(zhàn)項(xiàng)目源碼》,點(diǎn)擊傳送門即可獲取!
Redis 40題:**
[外鏈圖片轉(zhuǎn)存中…(img-a5lFb7i8-1711972912774)]
Spring 26 題+ 微服務(wù) 27題+ Linux 45題:
[外鏈圖片轉(zhuǎn)存中…(img-3ykm3NWQ-1711972912774)]
Java面試題合集:
[外鏈圖片轉(zhuǎn)存中…(img-Yd5z7eKp-1711972912774)]文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-846908.html
《一線大廠Java面試題解析+核心總結(jié)學(xué)習(xí)筆記+最新講解視頻+實(shí)戰(zhàn)項(xiàng)目源碼》,點(diǎn)擊傳送門即可獲取!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-846908.html
到了這里,關(guān)于ElasticSearch java API - 聚合查詢的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!