日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

白话Elasticsearch47-深入聚合数据分析之Cardinality Aggs-cardinality算法之优化内存开销以及HLL算法

發(fā)布時(shí)間:2025/3/21 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 白话Elasticsearch47-深入聚合数据分析之Cardinality Aggs-cardinality算法之优化内存开销以及HLL算法 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 概述
  • 官方說(shuō)明
  • precision_threshold優(yōu)化準(zhǔn)確率和內(nèi)存開(kāi)銷(xiāo)
  • HyperLogLog++ (HLL)算法性能優(yōu)化


概述

繼續(xù)跟中華石杉老師學(xué)習(xí)ES,第47篇

課程地址: https://www.roncoo.com/view/55


官方說(shuō)明

Cardinality Aggregation:戳這里


precision_threshold優(yōu)化準(zhǔn)確率和內(nèi)存開(kāi)銷(xiāo)

原始數(shù)據(jù):

統(tǒng)計(jì)下有多少個(gè)不同的品牌

DSL:

GET /tvs/sales/_search {"size" : 0,"aggs" : {"distinct_brand" : {"cardinality" : {"field" : "brand","precision_threshold" : 100 }}} }

注意下 "precision_threshold" : 100 的意思是: brand去重,如果brand的unique value,在100個(gè)以?xún)?nèi),小米,長(zhǎng)虹,三星,TCL,HTL。。。 在多少個(gè)unique value以?xún)?nèi),cardinality,幾乎保證100%準(zhǔn)確 。

cardinality算法,會(huì)占用precision_threshold * 8 byte 內(nèi)存消耗,100 * 8 = 800個(gè)字節(jié) 占用內(nèi)存很小。。。而且unique value如果的確在值以?xún)?nèi),那么可以確保100%準(zhǔn)確

precision_threshold,值設(shè)置的越大,占用內(nèi)存越大, 假設(shè)設(shè)置 1000,那么1000 * 8 = 8000 / 1000 = 8KB,可以確保更多unique value的場(chǎng)景下,100%的準(zhǔn)確

field,去重,count,這時(shí)候,unique value,10000, precision_threshold=10000,10000 * 8 = 80000個(gè)byte,80KB


HyperLogLog++ (HLL)算法性能優(yōu)化

cardinality底層算法:HLL算法,HLL算法的性能會(huì)對(duì)所有的uqniue value取hash值,通過(guò)hash值近似去求distcint count,存在誤差 .

默認(rèn)情況下,發(fā)送一個(gè)cardinality請(qǐng)求的時(shí)候,會(huì)動(dòng)態(tài)地對(duì)所有的field value,取hash值;

優(yōu)化的話(huà): 將取hash值的操作,前移到建立索引的時(shí)候 ,如下

PUT /tvs/ {"mappings": {"sales": {"properties": {"brand": {"type": "text","fields": {"hash": {"type": "murmur3" }}}}}} }

這樣在執(zhí)行同樣的查詢(xún)的話(huà),就不會(huì)在請(qǐng)求的時(shí)候執(zhí)行hash值了。

GET /tvs/sales/_search {"size" : 0,"aggs" : {"distinct_brand" : {"cardinality" : {"field" : "brand.hash","precision_threshold" : 100 }}} }

總結(jié)

以上是生活随笔為你收集整理的白话Elasticsearch47-深入聚合数据分析之Cardinality Aggs-cardinality算法之优化内存开销以及HLL算法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。