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

Springboot操作Elasticsearch——聚合分組與排序

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

這兩天項(xiàng)目中需要從es中查詢數(shù)據(jù),根據(jù)某個(gè)字段進(jìn)行分組,求其最大、最小、平均值,并按最大值進(jìn)行排序。

springboot的版本號(hào):2.0.6.RELEASE

Elasticsearch的版本號(hào):5.6.3

主要代碼記錄下:

BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery()
? ? ? ? ? ? ? ? .filter(QueryBuilders.termsQuery("a", aList))
? ? ? ? ? ? ? ? .filter(QueryBuilders.termsQuery("b", bList))
? ? ? ? ? ? ? ? .filter(QueryBuilders.rangeQuery("cTime")
? ? ? ? ? ? ? ? ? ? ? ? .from(startTime)
? ? ? ? ? ? ? ? ? ? ? ? .to(endTime));
AggregationBuilder termsBuilder = AggregationBuilders.terms("fieldTerms").field("myField").size(99999).order(Terms.Order.aggregation("max_f", false));
MaxAggregationBuilder maxAggf = AggregationBuilders.max("max_f").field("prod.f");
MinAggregationBuilder minAggf = AggregationBuilders.min("min_f").field("prod.f");
AvgAggregationBuilder avgAggf = AggregationBuilders.avg("avg_f").field("prod.f");
termsBuilder.subAggregation(maxAggf);
termsBuilder.subAggregation(minAggf);
termsBuilder.subAggregation(avgAggf);
termsBuilder.subAggregation(maxAggMem);
termsBuilder.subAggregation(minAggMem);
termsBuilder.subAggregation(avgAggMem);

TransportClient transportClient = ESConnectionManagement.getInstance();
SearchRequestBuilder searchRequestBuilder = transportClient.prepareSearch("indexName_*")
?? ??? ?.setTypes("type1", "type2")
?? ??? ?.setScroll(TimeValue.timeValueMinutes(1))
?? ??? ?.setQuery(queryBuilder)
?? ??? ?.addAggregation(aggregationBuilder)
?? ??? ?.setSize(0); // 只獲取聚合結(jié)果,不顯示hits數(shù)據(jù)
SearchResponse scrollResponse = searchRequestBuilder.execute().actionGet();
Map<String, Aggregation> map = ?scrollResponse.getAggregations().asMap();
?? ?
StringTerms stringTerms = (StringTerms)map.get("fieldTerms");
List<StringTerms.Bucket> buckets = stringTerms.getBuckets();

for (StringTerms.Bucket bucket : buckets) {
?? ?String myField = bucket.getKeyAsString();
?? ?Map<String, Aggregation> aggMap = bucket.getAggregations().asMap();
?? ?// 獲取的最大、最小、平均值
?? ?InternalMax maxf = (InternalMax)aggMap.get("max_f");
?? ?String maxfValue = BigDecimal.valueOf(maxf.getValue())
?? ??? ??? ?.setScale(2, BigDecimal.ROUND_HALF_UP)
?? ??? ??? ?.toString();

?? ?InternalMin minf = (InternalMin)aggMap.get("min_f");
?? ?String minfValue = BigDecimal.valueOf(minf.getValue())
?? ??? ??? ?.setScale(2, BigDecimal.ROUND_HALF_UP)
?? ??? ??? ?.toString();

?? ?InternalAvg avgf = (InternalAvg)aggMap.get("avg_f");
?? ?String avgfValue = BigDecimal.valueOf(avgf.getValue())
?? ??? ??? ?.setScale(2, BigDecimal.ROUND_HALF_UP)
?? ??? ??? ?.toString();
?? ?...
}

其中

1、termsBuilder.subAggregation(maxAggf);

表示往分組聚合對(duì)象里追加聚合函數(shù),可以追加多個(gè)聚合函數(shù)。

2、AggregationBuilders.terms("fieldTerms").field("myField").size(99999).order(Terms.Order.aggregation("max_f", false));

表示將字段myField進(jìn)行分組,并按聚合字段max_f倒序排列,設(shè)置最多返回99999條結(jié)果,若不寫(xiě)則默認(rèn)返回10條結(jié)果,需要注意。

3、InternalMax maxf = (InternalMax)aggMap.get("max_f");

表示最大值的聚合對(duì)象獲取到的值類(lèi)型,會(huì)有對(duì)應(yīng)的InternalMax對(duì)象來(lái)接收,最小值對(duì)象為InternalMin,平均值對(duì)象為InternalAvg。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-596197.html

到了這里,關(guān)于Springboot操作Elasticsearch——聚合分組與排序的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(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)文章

  • Java Elasticsearch多條件分組聚合查詢

    需求 ????????在項(xiàng)目開(kāi)發(fā)中,需要從elasticsearch中查詢?nèi)罩緮?shù)據(jù),先統(tǒng)計(jì)每一天的日志調(diào)用量,然后在每一天的分組聚合基礎(chǔ)上,再分組聚合統(tǒng)計(jì)成功和失敗的日志調(diào)用量。 代碼

    2024年02月08日
    瀏覽(27)
  • 五、淺析[ElasticSearch]底層原理與分組聚合查詢

    五、淺析[ElasticSearch]底層原理與分組聚合查詢

    集群節(jié)點(diǎn)介紹 es配置文件夾中 客戶端節(jié)點(diǎn) 當(dāng)主節(jié)點(diǎn)和數(shù)據(jù)節(jié)點(diǎn)配置都設(shè)置為false的時(shí)候,該節(jié)點(diǎn)只能處理路由請(qǐng)求,處理搜索,分發(fā)索引操作等,從本質(zhì)上來(lái)說(shuō)該客戶節(jié)點(diǎn)表現(xiàn)為智能負(fù)載平衡器。獨(dú)立的客戶端節(jié)點(diǎn)在一個(gè)比較大的集群中是非常有用的,他協(xié)調(diào)主節(jié)點(diǎn)和數(shù)據(jù)節(jié)

    2024年02月16日
    瀏覽(18)
  • 【JaveWeb教程】(20) MySQL數(shù)據(jù)庫(kù)開(kāi)發(fā)之 基本查詢、條件查詢、聚合函數(shù)、分組查詢、排序查詢、分頁(yè)查詢 詳細(xì)代碼示例講解

    【JaveWeb教程】(20) MySQL數(shù)據(jù)庫(kù)開(kāi)發(fā)之 基本查詢、條件查詢、聚合函數(shù)、分組查詢、排序查詢、分頁(yè)查詢 詳細(xì)代碼示例講解

    在上次學(xué)習(xí)的內(nèi)容中,我們講解了: 使用DDL語(yǔ)句來(lái)操作數(shù)據(jù)庫(kù)以及表結(jié)構(gòu)(數(shù)據(jù)庫(kù)設(shè)計(jì)) 使用DML語(yǔ)句來(lái)完成數(shù)據(jù)庫(kù)中數(shù)據(jù)的增、刪、改操作(數(shù)據(jù)庫(kù)操作) 我們今天還是繼續(xù)學(xué)習(xí)數(shù)據(jù)庫(kù)操作方面的內(nèi)容:查詢(DQL語(yǔ)句)。 查詢操作我們分為兩部分學(xué)習(xí): DQL語(yǔ)句-單表操作

    2024年02月02日
    瀏覽(46)
  • Elasticsearch - 聚合獲取原始數(shù)據(jù)并分頁(yè)&排序&模糊查詢

    Elasticsearch - 聚合獲取原始數(shù)據(jù)并分頁(yè)&排序&模糊查詢

    ES版本: 7.6. 需要按照主機(jī)ID 進(jìn)行告警時(shí)間的匯總,并且還得把主機(jī)相關(guān)的信息展示出來(lái)。 注: 所有的數(shù)據(jù)都存在索引中, 通過(guò)一個(gè)DSL查詢展示 實(shí)際上就是將terms聚合的結(jié)果以列表形式分頁(yè)展示。 bucket_sort中 from不是pageNum,如想實(shí)現(xiàn)pageNum效果,from=pageNum*size即可; terms聚合

    2024年02月05日
    瀏覽(20)
  • 解決Elasticsearch的Text類(lèi)型的字段參與聚合和排序

    解決Elasticsearch的Text類(lèi)型的字段參與聚合和排序

    text字段類(lèi)型用于全文內(nèi)容,例如電子郵件正文或產(chǎn)品說(shuō)明,并且es會(huì)通過(guò)分析器對(duì)字符串進(jìn)行分詞,可以在全文檢索中搜索單獨(dú)的單詞。文本字段最適合非結(jié)構(gòu)化但可讀的內(nèi)容并且不用于排序,也很少用于聚合 keyword主要用于結(jié)構(gòu)化內(nèi)容的字段,并且總是會(huì)有相同值的字段。

    2024年02月11日
    瀏覽(23)
  • Elasticsearch聚合學(xué)習(xí)之四:結(jié)果排序,阿里云java面試

    Elasticsearch聚合學(xué)習(xí)之四:結(jié)果排序,阿里云java面試

    返回結(jié)果如下,已經(jīng)按照key的大小從大到小排序: … “aggregations” : { “price” : { “buckets” : [ { “key” : 80000.0, “doc_count” : 1 }, { “key” : 60000.0, “doc_count” : 0 }, { “key” : 40000.0, “doc_count” : 0 }, { “key” : 20000.0, “doc_count” : 4 }, { “key” : 0.0, “doc_count” : 3 } ] } } }

    2024年04月09日
    瀏覽(24)
  • Mysql 數(shù)據(jù)庫(kù)DQL 數(shù)據(jù)查詢語(yǔ)言 SELECT 基本查詢、條件查詢、聚合查詢、分組查詢、排序查詢、分頁(yè)查詢——包含DQL所有查詢語(yǔ)句。吐血分享。

    Mysql 數(shù)據(jù)庫(kù)DQL 數(shù)據(jù)查詢語(yǔ)言 SELECT 基本查詢、條件查詢、聚合查詢、分組查詢、排序查詢、分頁(yè)查詢——包含DQL所有查詢語(yǔ)句。吐血分享。

    DQL:數(shù)據(jù)查詢語(yǔ)言; 用來(lái)對(duì)表內(nèi)的數(shù)據(jù)進(jìn)行查找 。Database Query Language SQL語(yǔ)句分為:基本查詢、條件查詢、聚合查詢、分組查詢、排序查詢、分頁(yè)查詢。 ?可以發(fā)現(xiàn)name字段就只剩下一個(gè)張三了; ? 條件: 條件查詢—比較運(yùn)算符 比較運(yùn)算符 功能 大于 = 大于等于 小于 = 小于等

    2024年01月19日
    瀏覽(45)
  • elasticsearch[四]-數(shù)據(jù)聚合排序查詢、搜索框自動(dòng)補(bǔ)全、數(shù)據(jù)同步、集群

    elasticsearch[四]-數(shù)據(jù)聚合排序查詢、搜索框自動(dòng)補(bǔ)全、數(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 要方便的多,而且查詢速度非常快,可以實(shí)現(xiàn)近

    2024年01月19日
    瀏覽(18)
  • ElasticSearch聚合操作

    ElasticSearch聚合操作

    Elasticsearch除搜索以外,提供了針對(duì) ES 數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析的功能。 聚合(aggregations):可以讓我們極其方便的實(shí)現(xiàn)對(duì)數(shù)據(jù)的統(tǒng)計(jì)、分析、運(yùn)算。 基本語(yǔ)法: Metric Aggregation:一些數(shù)學(xué)運(yùn)算,可以對(duì)文檔字段進(jìn)行統(tǒng)計(jì)分析,類(lèi)比 Mysql中的 min(), max(), sum() 操作。 Bucket Aggregation:一些

    2024年02月08日
    瀏覽(15)
  • Java 1.8 List集合排序、去重、分組、過(guò)濾、合并、截取操作

    1、正序 2、逆序 3、根據(jù)某個(gè)屬性或多個(gè)屬性排序 多個(gè)屬性排序:需要添加排序條件就在后面添加.thenComparing(UserVO::getxxx),它是在上一個(gè)條件的基礎(chǔ)上進(jìn)行排序 1、去重 2、根據(jù)某個(gè)屬性去重(它將該字段還進(jìn)行排序了) 3、根據(jù)某個(gè)屬性去重(這個(gè)方法沒(méi)有排序) 4、對(duì)多個(gè)

    2024年02月01日
    瀏覽(87)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包