es1.7.2 按照_type先聚合,再按照時間二次聚合

 // 設置查詢條件if (this.query != null) {this.searchbuilder.setQuery(this.query);}TermsBuilder typeAggregation = AggregationBuilders.terms("agg_type").field("_type");DateHistogramBuilder dateTermsBuilder = AggregationBuilders.dateHistogram("agg_pubtime").field("pubtime");dateTermsBuilder.format("yyyy-MM-dd");dateTermsBuilder.interval(DateHistogram.Interval.days(1));dateTermsBuilder.subAggregation(typeAggregation);searchbuilder.addAggregation(dateTermsBuilder);SearchResponse sr = searchbuilder.execute().actionGet();Map<String, Aggregation> aggMap = sr.getAggregations().asMap();DateHistogram classTerms = (DateHistogram)aggMap.get("agg_pubtime");Iterator<org.elasticsearch.search.aggregations.bucket.histogram.DateHistogram.Bucket> classBucketIt = (Iterator<Bucket>) classTerms.getBuckets().iterator();List<Map<String,Object>> dataList = new ArrayList<Map<String,Object>>();List<String[]> result = new ArrayList();while(classBucketIt.hasNext()){Map<String,Object> res = new HashMap<String, Object>();org.elasticsearch.search.aggregations.bucket.histogram.DateHistogram.Bucket classBucket = classBucketIt.next();//System.out.println("時間"+classBucket.getKey());StringTerms agg_type = (StringTerms) classBucket.getAggregations().asMap().get("agg_type");List<Terms.Bucket> buckets = (List<Terms.Bucket>) agg_type.getBuckets();List<String[]> list = new ArrayList<String[]>();for (Terms.Bucket bucket : buckets) {String[] str = new String[2];str[0] = bucket.getKey().trim();//日期str[1] = String.valueOf(bucket.getDocCount());//數量
//                list.add(str);//System.out.println( str[0]  +"======"   + str[1] );}}

參考:gpt

import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.aggregations.AggregationBuilders;
import org.elasticsearch.search.aggregations.bucket.histogram.DateHistogramInterval;
import org.elasticsearch.search.aggregations.bucket.terms.Terms;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.sort.SortOrder;
import org.elasticsearch.common.unit.TimeValue;import java.io.IOException;
import java.util.concurrent.TimeUnit;public class AggregationExample {public static void main(String[] args) throws IOException {// 創建 Elasticsearch 客戶端RestHighLevelClient client = createClient();// 創建聚合請求SearchRequest searchRequest = new SearchRequest("your_index_name");SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();// 設置查詢條件searchSourceBuilder.query(QueryBuilders.matchAllQuery());// 設置第一級聚合,按照 _type 字段進行聚合Terms.AggregationBuilder typeAggregation = AggregationBuilders.terms("by_type").field("_type");// 設置第二級聚合,按照時間進行聚合,這里使用日期直方圖(Histogram)聚合Terms.BucketOrder termsOrder = Terms.BucketOrder.key(true);typeAggregation.subAggregation(AggregationBuilders.dateHistogram("by_time").field("your_time_field").dateHistogramInterval(DateHistogramInterval.DAY).subAggregation(AggregationBuilders.terms("top_hits").size(10).order(termsOrder)));// 添加聚合請求到搜索源中searchSourceBuilder.aggregation(typeAggregation);// 設置分頁和超時時間searchSourceBuilder.size(0);searchSourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));// 發起搜索請求并獲取響應searchRequest.source(searchSourceBuilder);SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);// 解析聚合結果Terms byTypeAggregation = searchResponse.getAggregations().get("by_type");for (Terms.Bucket typeBucket : byTypeAggregation.getBuckets()) {System.out.println("Type: " + typeBucket.getKeyAsString());Terms byTimeAggregation = typeBucket.getAggregations().get("by_time");for (Terms.Bucket timeBucket : byTimeAggregation.getBuckets()) {System.out.println("Time: " + timeBucket.getKeyAsString());Terms topHitsAggregation = timeBucket.getAggregations().get("top_hits");for (Terms.Bucket hitBucket : topHitsAggregation.getBuckets()) {System.out.println("Hit: " + hitBucket.getKeyAsString());}}}// 關閉 Elasticsearch 客戶端client.close();}private static RestHighLevelClient createClient() {// 創建和配置 Elasticsearch 客戶端RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("localhost", 9200, "http")));return client;}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/37771.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/37771.shtml
英文地址,請注明出處:http://en.pswp.cn/news/37771.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[Android] 通過JNI 讓 JAVA 調用 android native 接口

前言&#xff1a; JNI (java native interface) 是一個庫&#xff0c;可以讓 java 代碼和其他語言互動&#xff0c;比如 java 通過 JNI 調用融合了 jni庫的 c/c 代碼&#xff0c;注意&#xff0c;這里要求 c/c代碼中必須通過鏈接 jni 庫并按照 JNI 規范定義一套可供 JAVA 調用…

STM32自帶的DSP庫的濾波初體驗(一)

最近在弄STM32自帶的DSP庫里的濾波&#xff0c;記錄一下&#xff1a; arm_fir_instance_q15 instance_q15_S; #define NUM_TAPS 16 //濾波系數的個數 #define BLOCK_SIZE 32 q15_t firStateF32[BLOCK_SIZE NUM_TAPS]; q15_t Fir_Coeff[NUM_TAPS] {-79, -136, 312, 6…

【02】基礎知識:typescript數據類型

1、布爾類型 boolean let flag: boolean false2、數字類型 number let num: number 6 //十進制 let num2: number 0xf00d //十六進制 let num3: number 0b1010 //二進制 let num4: number 0o744 //八進制3、字符串類型 string 用雙引號&#xff08;“&#xff09;或單引…

MongoDB 簡介

什么是MongoDB ? MongoDB 是由C語言編寫的&#xff0c;是一個基于分布式文件存儲的開源數據庫系統。 在高負載的情況下&#xff0c;添加更多的節點&#xff0c;可以保證服務器性能。 MongoDB 旨在為WEB應用提供可擴展的高性能數據存儲解決方案。 MongoDB 將數據存儲為一個…

mqttfx連上OneNET生成token時的一大坑,報用戶名或密碼錯誤

整個流程如下連接&#xff1a; MQTT.fx和MQTTX 鏈接ONENET物聯網開發平臺避坑細節干貨。 其中在生成token時&#xff0c;搞了半天在連接后都會報用戶名密碼錯誤 最后發現是格式問題&#xff0c;輸入所有字符后一定要雙擊看是否可以全選中&#xff0c;可以全選中說明字符的格式…

java spring cloud 企業工程管理系統源碼+二次開發+定制化服務 em

Java版工程項目管理系統 Spring CloudSpring BootMybatisVueElementUI前后端分離 功能清單如下&#xff1a; 首頁 工作臺&#xff1a;待辦工作、消息通知、預警信息&#xff0c;點擊可進入相應的列表 項目進度圖表&#xff1a;選擇&#xff08;總體或單個&#xff09;項目顯…

springBoot中service層查詢使用多線程CompletableFuture(有返回值)

重點&#xff1a; 1. 創建線程池 Executor executor Executors.newCachedThreadPool();//保存線程List<CompletableFuture<Void>> futures new ArrayList<>();2.使用 //這里可以是多個看下面代碼是在for中使用的 CompletableFuture<Void> future …

深入解析路由與網絡:網絡的脈絡

目錄 路由 廣域網 公網 外網 局域網 內網 以太網 Wi-Fi CDN IPv4和IPv6 IP地址分類 無類別域間路由&#xff08;CIDR&#xff09; 路由 路由是指在計算機網絡中&#xff0c;將數據包從源地址傳遞到目標地址的過程。在一個復雜的網絡中&#xff0c;數據包需要經過多…

冶金作業VR虛擬仿真廠家

對于高風險行業來說&#xff0c;開展安全教育培訓是企業的重點工作&#xff0c;傳統培訓逐漸跟不上時代變化和工人需求&#xff0c;冶金安全VR模擬仿真培訓系統作為一種新型的教育和培訓工具&#xff0c;借助VR虛擬現實技術為冶金行業的工人提供一個安全、高效的培訓環境。 冶金…

Angular中的管道Pipes

Angular中的管道&#xff08;Pipes&#xff09;是一種強大的工具&#xff0c;它可以處理和轉換數據&#xff0c;然后將其呈現在視圖中。它們可以被用于排序、格式化和過濾數據等任務。在本文中&#xff0c;我們將介紹Angular中的管道以及如何使用它們來簡化開發過程。 管道的基…

Ansible Service模塊,使用 Ansible Service模塊進行服務管理

Ansible 是一種自動化工具&#xff0c;它可以簡化配置管理、應用程序部署和任務自動化等操作。Ansible 的 Service 模塊是其中一個重要的模塊&#xff0c;它提供了管理服務的功能&#xff0c;使得在遠程主機上啟動、停止、重啟和重新加載服務變得簡單和可靠。本文將介紹 Ansibl…

大疆秋招指南,網申測評和面試攻略

大疆秋招內容簡介 這是一個非常卷的時代&#xff0c;一到畢業季&#xff0c;各種各樣規模不一的公司&#xff0c;紛紛向社會招聘&#xff0c;競爭實力強&#xff0c;知名度越高的企業&#xff0c;往往越能得到能力出眾的人才的青睞&#xff0c;也正是在一批批新血液的注入下&a…

戶外組網擺脫布線困擾,工業5G網關實現無人值守、遠程實時監控

在物聯網通信技術發達的2023&#xff0c;網絡覆蓋對所及之處的全面覆蓋&#xff0c;科技發展的促使下很多高危戶外場景也在思考如何利用無線技術提高人員安全及現場無人化管理。 煤礦是我們國家不可缺少的重要能源&#xff0c;其開采過程的危險系數也是眾所皆知的&#xff0c;…

為什么爬蟲要用高匿代理IP?高匿代理IP有什么優點

只要搜代理IP&#xff0c;度娘就能給我們跳出很多品牌的推廣&#xff0c;比如我們青果網路的。 正如你所看到的&#xff0c;我們廠商很多宣傳用詞都會用到高匿這2字。 這是為什么呢&#xff1f;高匿IP有那么重要嗎&#xff1f; 這就需要我們從HTTP代理應用最多最廣的&#xf…

云上社群學習系統部分接口設計詳解

目錄 一、項目簡介 二、技術選型 三、數據庫設計 四、接口設計及思考 回復帖子部分 4.1 回復帖子 4.1.1.1 實現邏輯 4.1.1.2創建Service接? 4.1.1.3 實現Service接? 4.1.1.4 實現Controller 4.1.1.5 測試接口 4.1.1.6 實現前端頁面 4.2 點贊帖子 4.2.1.1 參數要求…

探索前端動畫之CSS魔法

引言 在現代網頁設計中&#xff0c;動畫已經成為了吸引用戶注意力、提升用戶體驗的重要手段之一。而在前端開發中&#xff0c;CSS動畫是一種常見且強大的實現方式。本篇博客將帶你深入探索前端動畫中的CSS魔法&#xff0c;通過清晰的思路和完整的示例代碼&#xff0c;幫助你掌…

tools/packtool/dragon: 沒有那個文件或目錄 明明有這個文件

tools/packtool/dragon: 沒有那個文件或目錄 明明有這個文件 在編譯一個工程時碰到這個問題&#xff0c;重裝虛擬機&#xff0c;更換ubuntu系統版本都沒有解決&#xff0c;看到網上的文章解決了。 ubuntu中執行可執行文件時報錯“沒有那個文件或目錄”的解決辦法&#xff08;…

Storm學習之使用官方Docker鏡像快速搭建Storm運行環境

文章目錄 0.前言搭建完的效果 1.教程1.1.docker 安裝 zookeeper1.2. 安裝 storm nimbus1.3.docker 安裝 supervisor1.4.docker 安裝 storm-ui1.5.查看已經啟動的容器1.6.提交topology到 storm集群 2.總結3.參考文檔 0.前言 Apache Storm 官方也出了Docker 鏡像 https://hub.do…

lua使用心得

lua語言的一些注意事項 在控制結構的條件中除了false和nil為假&#xff0c;其他值都為真。所以Lua認為0和空串都是真。lua5.3之前的版本只支持浮點數&#xff0c;lua5.3才引入了對整數的支持&#xff0c;/僅支持浮點數除法&#xff0c;要實現C里的整除效果必須使用雙斜杠//超過…

nodejs+vue+elementui美食網站的設計與實現演示錄像2023_0fh04

本次的畢業設計主要就是設計并開發一個美食網站軟件。運用當前Google提供的nodejs 框架來實現對美食信息查詢功能。當然使用的數據庫是mysql。系統主要包括個人信息修改&#xff0c;對餐廳管理、用戶管理、餐廳信息管理、菜系分類管理、美食信息管理、美食文化管理、系統管理、…