【基礎篇】第5章 Elasticsearch 數據聚合與分析

在Elasticsearch的龐大功能體系中,數據聚合與分析扮演著至關重要的角色,它使我們能夠從海量數據中提煉出有價值的信息,為決策提供依據。本章將深入探討Elasticsearch的聚合功能,從基本概念到常見類型的實踐,讓你掌握如何高效地對數據進行分組、計數、統計和分析。

5.1 聚合簡介

Elasticsearch的聚合功能允許用戶對索引中的數據進行匯總和分析,它不僅僅是簡單的計數或求和,而是涵蓋了從基本統計到復雜數據分布分析的全方位能力。聚合操作通過在搜索請求中定義,可以在一次查詢中同時返回搜索結果和聚合結果,極大地增強了數據探索的靈活性和效率。

5.2 常用聚合類型

Elasticsearch提供的聚合功能非常豐富,能夠滿足多種數據分析需求。以下是對幾種常用聚合類型的詳細說明,包括它們的工作原理、適用場景以及具體案例,幫助讀者更好地理解和應用這些強大的數據處理工具。

5.2.1 Terms聚合

概念: terms聚合是最基礎也是最常用的聚合類型,它根據指定字段的值進行分組,每個唯一的值對應一個桶(bucket),并統計每個桶內文檔的數量。這種聚合非常適合進行分類統計,比如統計網站上不同類別的文章數量。

案例:
假設有一個博客文章索引,我們想統計每個作者的文章數量。

GET blog_posts/_search
{"size": 0,"aggs": {"authors": {"terms": {"field": "author.keyword","size": 10}}}
}

結果示例:

{"aggregations": {"authors": {"buckets": [{"key": "Alice", "doc_count": 35},{"key": "Bob", "doc_count": 22},{"key": "Charlie", "doc_count": 18},...]}}
}
5.2.2 Histogram聚合

概念: histogram聚合將數值型字段的值域分割成多個區間(桶),每個區間代表一個范圍,然后統計落入每個區間內的文檔數量。它適用于分析數值數據的分布情況,比如分析商品價格的分布。

案例:
分析商品價格區間內的銷售分布,以100元為間隔。

GET sales/_search
{"aggs": {"price_histogram": {"histogram": {"field": "price","interval": 100}}}
}

結果示例:

{"aggregations": {"price_histogram": {"buckets": [{"key": 0, "doc_count": 50},{"key": 100, "doc_count": 30},{"key": 200, "doc_count": 20},...]}}
}
5.2.3 Date Histogram聚合

概念: date_histogram聚合與histogram相似,但專用于日期字段,按時間間隔(如天、周、月等)分組,用于分析時間序列數據。例如,分析網站每天的訪問量。

案例:
分析每天的訪問記錄數量。

GET website_logs/_search
{"aggs": {"visits_per_day": {"date_histogram": {"field": "access_date","calendar_interval": "day"}}}
}

結果示例:

{"aggregations": {"visits_per_day": {"buckets": [{"key_as_string": "2023-04-01T00:00:00.000Z", "key": 1680230400000, "doc_count": 235},{"key_as_string": "2023-04-02T00:00:00.000Z", "key": 1680316800000, "doc_count": 250},...]}}
}
5.2.4 Metrics聚合

概念: 指標聚合用于計算單個數值指標,如平均值(avg)、最大值(max)、最小值(min)、總和(sum)等。它可以單獨使用,但更多時候作為桶聚合內的子聚合,對每個桶中的數據進行進一步的數值分析。

案例:
在每個作者的文章數量統計基礎上,進一步計算每個作者文章的平均評分。

GET blog_posts/_search
{"size": 0,"aggs": {"authors": {"terms": {"field": "author.keyword","size": 10},"aggs": {"average_rating": {"avg": {"field": "rating"}}}}}
}

結果示例:

{"aggregations": {"authors": {"buckets": [{"key": "Alice", "doc_count": 35, "average_rating": {"value": 4.2}},{"key": "Bob", "doc_count": 22, "average_rating": {"value": 3.8}},...]}}
}

通過這些案例,我們可以看到Elasticsearch的聚合功能不僅強大而且靈活,能夠滿足多樣化的數據分析需求。掌握這些常用聚合類型及其應用場景,是進行高效數據探索和分析的重要基礎。

5.3 桶與指標聚合

Elasticsearch的聚合功能之所以強大,很大程度上得益于其靈活的桶聚合(Bucket Aggregations)和指標聚合(Metric Aggregations)機制。這兩種聚合類型相輔相成,共同構成了復雜數據分析的基礎。本節將更深入地探討這兩類聚合的工作原理、相互作用方式以及在實際應用中的高級用法。

5.3.1 桶聚合(Bucket Aggregations)的深入解析

桶聚合,顧名思義,是將數據劃分到不同的“桶”中,每個桶代表一個數據范圍或類別。它的核心作用是將數據分組,為后續的分析提供結構框架。主要的桶聚合類型包括termshistogramdate_histogram等,前面已有介紹。更進一步地,桶聚合還可以嵌套,形成層級結構,使得數據細分和分析更為精細。

高級用法:

  • 嵌套桶聚合:通過在桶內嵌套其他桶聚合,可以實現多維度的數據分析。例如,在按月份統計銷售量的同時,還可以按產品類別細分,即在date_histogram桶內嵌套一個terms桶。
  • 復合桶聚合:如range聚合,根據數值字段的范圍劃分桶,特別適用于價格區間分析等場景。
  • Missing桶:用于捕捉缺失值,單獨分析沒有特定字段數據的文檔。
5.3.2 指標聚合(Metric Aggregations)的深化應用

指標聚合用于計算每個桶內文檔的數值型指標,如平均值、總和、最大值、最小值等。它通常與桶聚合結合使用,為每個分組提供量化分析結果。主要的指標聚合類型有avgsumminmaxcardinality(唯一值計數)等。

高級用法:

  • 多指標聚合:在同一個桶內可以定義多個指標聚合,一次性獲取多個統計指標,如同時計算每個類別的平均銷售額和銷售筆數。
  • Pipeline聚合:這是一種特殊的指標聚合,它允許使用先前桶或指標聚合的結果進行進一步的計算,如計算百分比變化、移動平均等。這為復雜數據分析提供了強大的支持。
  • Top Hits聚合:在每個桶內返回最相關的文檔,這對于分析每個分組的代表性文檔非常有用。
5.3.3 桶與指標聚合的協同工作

桶聚合與指標聚合的結合使用是Elasticsearch數據分析的核心所在。桶聚合負責數據的分組,為每個組創建一個上下文;指標聚合則在此上下文中進行數值計算,提供每個分組的統計信息。這種結構化的方法使得用戶能夠從宏觀到微觀,層層深入地探索數據。

小結

通過本章的學習,我們不僅認識到了Elasticsearch聚合功能的重要性,還深入探討了多種常用聚合類型及其應用場景。桶聚合與指標聚合的結合使用,為我們提供了強大的數據分組和統計能力,是進行數據分析和報告制作的有力工具。掌握了這些基礎,你將能夠更加自信地面對數據海洋,從中挖掘出寶貴的信息寶藏。接下來的旅程,【高級篇】第6章《高級查詢與搜索優化》,將帶領大家探索更高級的查詢技術與性能優化策略,進一步提升Elasticsearch的使用效能。

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

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

相關文章

Elasticsearch 使用誤區之二——頻繁更新文檔

在使用 Elasticsearch 時,頻繁更新文檔是一種常見誤區。這不僅影響性能,還可能導致系統資源的浪費。 理解 Elasticsearch 的文檔更新機制對于優化性能至關重要。 關于 Elasticsearch 更新操作,常見問題如下: ——https://t.zsxq.c…

Spring Cloud實戰:構建分布式系統解決方案

Spring Cloud實戰:構建分布式系統解決方案 大家好,我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編,也是冬天不穿秋褲,天冷也要風度的程序猿!今天我們將深入探討如何使用Spring Cloud來構建分布式系統…

剖析DeFi交易產品之UniswapV4:概述篇

本文首發于公眾號:Keegan小鋼 UniswapV4 與 UniswapV3 相比,算法上并沒有什么改變,依然還是采用集中流動性模型,但架構上變化很大,包括功能架構,也包括技術架構。相比之前的版本,UniswapV4 最大…

百元藍牙耳機推薦2024,百元藍牙耳機排行榜盤點

在2024年面對琳瑯滿目的藍牙耳機選項,消費者往往難以抉擇,特別是在預算有限的情況下,如何在眾多產品中挑選出既滿足質量又符合預算的耳機成為了一個不小的挑戰。 為了幫助大家在繁多的選擇中找到真正物有所值的百元藍牙耳機,我們…

UnityUGUI之一:image和Rawimage

image組件的相關屬性 其中SpriteMode,若為單個圖片則為Single,圖片集則為Multiple 圖集的切割 點擊Slice可以進行自動切割 為且每個格子都可以進行單獨的九宮格切割 當圖片被九宮格切割再進行拉伸以后,九宮格的四角不會被拉伸 Tiled&#x…

構建支持多平臺的返利App跨平臺開發策略

構建支持多平臺的返利App跨平臺開發策略 大家好,我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編,也是冬天不穿秋褲,天冷也要風度的程序猿!今天我們將討論如何構建支持多平臺的返利App,特別關注跨平臺…

一棵B+樹可以存放多少行數據

以MySQL InnoDB為例。InnoDB存儲引擎最小儲存單元是頁,一頁大小固定是16KB,使用該引擎的表為索引組織表。B樹葉子存的是數據,內部節點存的是鍵值和指針。索引組織表通過非葉子節點的二分查找法以及指針確定數據在哪個頁中,進而再去…

數據治理不再頭疼,篩斗數據為您打造無縫數據處理體驗

在當今數字化時代,數據已成為企業最寶貴的資產之一。然而,隨著數據量的激增和數據來源的多樣化,數據治理成為許多企業面臨的一大挑戰。繁瑣的數據提取、混亂的數據結構和不清晰的數據質量,往往讓企業陷入數據處理的泥潭。幸運的是…

如何在本地一鍵配置最強國產大模型

自從OpenAI的ChatGPT橫空出世以來,國內外各類大語言模型(LLM)層出不窮,其中不乏Google的Gemini、Claude、文心一言等等。相較于競爭激烈的商業模型賽道,以Llama為代表的開源大模型的進步速度也十分驚人。 伴隨著大語言…

CP AUTOSAR標準之MemoryAccess(AUTOSAR_CP_SWS_MemoryAccess)(更新中……)

1 簡介和功能概述 該規范描述了AUTOSAR基礎軟件模塊內存訪問(MemAcc)的功能、API和配置。 ??內存訪問模塊通過基于地址的API提供對不同內存技術設備的訪問。內存訪問模塊始終由一個或多個內存驅動程序(Mem)補充。內存訪問模塊與內存設備技術無關,可與閃存、EEPROM、RAM或相變…

Python Tkinter:開發一款文件加密解密小工具

在這個信息泄露風險日益增加的時代,使用文件加密工具對于保護個人隱私和企業機密至關重要。 本文介紹了一款小工具——encryptDecrypt,它不僅提供了一個易于使用的圖形界面,簡化了加密和解密過程,還確保了數據的安全性&#xff0c…

深入解析 androidx.databinding.BaseObservable

在現代 Android 開發中,數據綁定 (Data Binding) 是一個重要的技術,它簡化了 UI 和數據之間的交互。在數據綁定框架中,androidx.databinding.BaseObservable 是一個關鍵類,用于實現可觀察的數據模型。本文將詳細介紹 BaseObservab…

python-求s=a+aa+aaa+aaaa+aa...a的值(賽氪OJ)

[題目描述] 求 saaaaaaaaaaaa...a 的值,其中 a 是一個一位的整數。 例如 :2222222222222222(此時共有 5 個數相加)。輸入格式: 整數 a 和 n ( n 個數相加)。輸出格式: s 的值。樣例輸入 2 2樣例輸出 24數據…

WSL——忘記root密碼(Ubuntu)

1、問題描述 Windows下的WSL(Ubuntu)忘記了root密碼,無法使用管理員權限。 2、解決方法 關閉 Ubuntu 窗口。打開 Windows 的 Powershell 或 cmd, 以 root 默認登陸 WSL。 wsl -u root 修改對應用戶密碼。 # xxx為要修改密碼的用…

Stable Diffusion【真人模型】:人臉特美的人像攝影大模型wuhaXL_realisticMixV3.0

今天和大家分享一個基于SDXL的真人大模型:wuhaXL_realisticMix。該模型無需使用LORA**就能生成的特別漂亮的人臉,雖然有時候人臉有些假,但是生成的人臉確實非常漂亮。 該模型底模融合了WhiteXL_realisticMix,訓練素材來自于視頻轉…

Dockerfile構建一個包含多個SpringBoot應用程序的鏡像

為什么要使用Dockerfile 構建一個包含多個SpringBoot應用程序的鏡像呢? 1、可移植性:Dockerfile 定義了一個標準化的方式來構建Docker鏡像,意味著無論在哪個系統上(只要它支持Docker), 都可以使用相同的Dockerfile來構建完全相同的…

pytorch統計學分布

1、pytorch統計學函數 import torcha torch.rand(2,2) print(a) print(torch.sum(a, dim0)) print(torch.mean(a, dim0)) print(torch.prod(a, dim0))print(torch.argmax(a, dim0)) print(torch.argmin(a, dim0)) print(torch.std(a)) print(torch.var(a)) print(torch.median…

如何學好AI繪畫?點這里有答案!

前言 地獄難度的求職模式下,“掌握一門技術”的那部分求職者,遠比其他人更有競爭力;而擁有出色技術和技能的設計師、以及未來想做設計師的小伙伴們,怎么才能更好實現工作自由? 只有兩個字:學習。 學習新…

EE trade:白銀什么情況下會暴漲

白銀價格的暴漲通常由多種因素共同作用引發,包括宏觀經濟背景、市場供需變化、地緣政治緊張局勢以及金融市場波動等。本文整理了一些具體情況和實例,說明白銀在什么情況下可能會暴漲。 1. 宏觀經濟因素 通貨膨脹急劇上升 背景:當通貨膨脹急…

電腦怎么錄屏幕視頻帶聲音?2種方法教會你

在數字時代的浪潮中,電腦屏幕視頻錄制已經成為一項潮流且實用的技能。無論是為了創作短視頻、分享游戲過程,還是為了記錄在線會議或教程,電腦錄屏都是非常重要的功能。但是不少的人都會遇上錄制好的視頻沒有聲音的困境,面對這種情…