国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Elasticsearch --- 數(shù)據(jù)聚合、自動(dòng)補(bǔ)全

這篇具有很好參考價(jià)值的文章主要介紹了Elasticsearch --- 數(shù)據(jù)聚合、自動(dòng)補(bǔ)全。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

一、數(shù)據(jù)聚合

聚合(aggregations)可以讓我們極其方便的實(shí)現(xiàn)對(duì)數(shù)據(jù)的統(tǒng)計(jì)、分析、運(yùn)算。例如:

  • 什么品牌的手機(jī)最受歡迎?

  • 這些手機(jī)的平均價(jià)格、最高價(jià)格、最低價(jià)格?

  • 這些手機(jī)每月的銷(xiāo)售情況如何?

實(shí)現(xiàn)這些統(tǒng)計(jì)功能的比數(shù)據(jù)庫(kù)的sql要方便的多,而且查詢(xún)速度非???,可以實(shí)現(xiàn)近實(shí)時(shí)搜索效果。

?

1.1、聚合的種類(lèi)

聚合常見(jiàn)的有三類(lèi):

  • 桶(Bucket)聚合:用來(lái)對(duì)文檔做分組

    • TermAggregation:按照文檔字段值分組,例如按照品牌值分組、按照國(guó)家分組

    • Date Histogram:按照日期階梯分組,例如一周為一組,或者一月為一組

  • 度量(Metric)聚合:用以計(jì)算一些值,比如:最大值、最小值、平均值等

    • Avg:求平均值

    • Max:求最大值

    • Min:求最小值

    • Stats:同時(shí)求max、min、avg、sum等

  • 管道(pipeline)聚合:其它聚合的結(jié)果為基礎(chǔ)做聚合

注意:參加聚合的字段必須是keyword、日期、數(shù)值、布爾類(lèi)型

?

1.2、DSL實(shí)現(xiàn)聚合

我們要統(tǒng)計(jì)所有數(shù)據(jù)中的酒店品牌有幾種,其實(shí)就是按照品牌對(duì)數(shù)據(jù)分組。此時(shí)可以根據(jù)酒店品牌的名稱(chēng)做聚合,也就是Bucket聚合。

Bucket聚合語(yǔ)法


語(yǔ)法如下:

GET?/hotel/_search
{
??"size":?0,??//?設(shè)置size為0,結(jié)果中不包含文檔,只包含聚合結(jié)果
??"aggs":?{?//?定義聚合
????"brandAgg":?{?//給聚合起個(gè)名字
??????"terms":?{?//?聚合的類(lèi)型,按照品牌值聚合,所以選擇term
????????"field":?"brand",?//?參與聚合的字段
????????"size":?20?//?希望獲取的聚合結(jié)果數(shù)量
??????}
????}
??}
}

結(jié)果如圖:

Elasticsearch --- 數(shù)據(jù)聚合、自動(dòng)補(bǔ)全?


聚合結(jié)果排序


默認(rèn)情況下,Bucket聚合會(huì)統(tǒng)計(jì)Bucket內(nèi)的文檔數(shù)量,記為count,并且按照count降序排序。

我們可以指定order屬性,自定義聚合的排序方式:

GET?/hotel/_search
{
??"size":?0,?
??"aggs":?{
????"brandAgg":?{
??????"terms":?{
????????"field":?"brand",
????????"order":?{
??????????"_count":?"asc" //?按照_count升序排列
????????},
????????"size":?20
??????}
????}
??}
}

限定聚合范圍


默認(rèn)情況下,Bucket聚合是對(duì)索引庫(kù)的所有文檔做聚合,但真實(shí)場(chǎng)景下,用戶(hù)會(huì)輸入搜索條件,因此聚合必須是對(duì)搜索結(jié)果聚合。那么聚合必須添加限定條件。

我們可以限定要聚合的文檔范圍,只要添加query條件即可:

GET?/hotel/_search
{
??"query":?{
????"range":?{
??????"price":?{
????????"lte":?200 // 只對(duì)200元以下的文檔聚合
??????}
????}
??},?
??"size":?0,?
??"aggs":?{
????"brandAgg":?{
??????"terms":?{
????????"field":?"brand",
????????"size":?20
??????}
????}
??}
}

這次,聚合得到的品牌明顯變少了:

Elasticsearch --- 數(shù)據(jù)聚合、自動(dòng)補(bǔ)全


Metric聚合語(yǔ)法


對(duì)桶內(nèi)的酒店做運(yùn)算,獲取每個(gè)品牌的用戶(hù)評(píng)分的min、max、avg等值。

這就要用到Metric聚合了,例如stat聚合:就可以獲取min、max、avg等結(jié)果。

語(yǔ)法如下:

GET?/hotel/_search
{
??"size":?0,?
??"aggs":?{
????"brandAgg":?{?
??????"terms":?{?
????????"field":?"brand",?
????????"size":?20
??????},
??????"aggs":?{?//?是brands聚合的子聚合,也就是分組后對(duì)每組分別計(jì)算
????????"score_stats":?{?//?聚合名稱(chēng)
??????????"stats":?{?//?聚合類(lèi)型,這里stats可以計(jì)算min、max、avg等
????????????"field":?"score"?//?聚合字段,這里是score
??????????}
????????}
??????}
????}
??}
}

這次的score_stats聚合是在brandAgg的聚合內(nèi)部嵌套的子聚合。因?yàn)槲覀冃枰诿總€(gè)桶分別計(jì)算。?

?

另外,我們還可以給聚合結(jié)果做個(gè)排序,例如按照每個(gè)桶的酒店平均分做排序:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-444432.html

到了這里,關(guān)于Elasticsearch --- 數(shù)據(jù)聚合、自動(dòng)補(bǔ)全的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包