1.聚合查詢
聚合(aggs)不同于普通查詢,是目前學到的第二種大的查詢分類,第一種即“query”,因此在代碼中的第一層嵌套由“query”變為了“aggs”,用于進行聚合的欄位必須是exact value,分詞欄位不可進行聚合,對于text欄位如果需要使用聚合,需要開啟fielddata,但是通常不建議,因為fielddata是將聚合使用的資料結構由磁盤(doc_values)變為了堆記憶體(field_data),大資料的聚合操作很容易導致OOM,詳細原理有時間再寫,
1.2聚合分類
1.2.1 分桶聚合(Bucket agregations):類比SQL中的group by的作用,主要用于統計不同型別資料的數量.
1.2.2 指標聚合(Metrics agregations):主要用于最大值、最小值、平均值、欄位之和等指標的統計
1.2.3 管道聚合(Pipeline agregations):用于對聚合的結果進行二次聚合,如要統計系結數量最多的標簽bucket,就是要先按照標簽進行分桶,再在分桶的結果上計算最大值,
語法展示
#當前版本為7.15,輸入aggs后可能有不同的提示
GET /zzl/_search
{
"aggs": {
"NAME": { #這個是你隨便起的,就和mysql的Aliases 那個一樣
"AGG_TYPE": {} # 聚合查詢的型別
}
}
}
分桶聚合展示
#聚合查詢 桶查詢
GET /zzl/_search
{
"_source": false,
"aggs": {
"price_aggs": {
"terms": {
"field": "price",
"size": 10
}
}
}
查詢結果展示
"aggregations" : {
"price_aggs" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [
{
"key" : 9999,
"doc_count" : 7
},
{
"key" : 3999,
"doc_count" : 1
},
{
"key" : 4999,
"doc_count" : 1
},
{
"key" : 6999,
"doc_count" : 1
}
]
}
}
可以看出來 ,一共被裝進四個桶里面,就和mysql的group by 差不多
使用場景
場景:用于統計不同種類的檔案的數量,可進行嵌套統計,
函式:terms
注意:聚合欄位必須是exact value,如keyword 如果是text型別會報錯 這里展示一下錯誤資訊
"error" : {
"root_cause" : [
{
"type" : "illegal_argument_exception",
"reason" : "Text fields are not optimised for operations that require per-document field data like aggregations and sorting, so these operations are disabled by default. Please use a keyword field instead. Alternatively, set fielddata=true on [name] in order to load field data by uninverting the inverted index. Note that this can use significant memory."
指標聚合展示
GET /zzl/_search
{
"_source": false,
"aggs": {
"price_aggs": {
"avg": {
"field": "price"
}
}
}
}
結果展示
"aggregations" : {
"price_aggs" : {
"value" : 8599.0
}
}
使用場景
場景:用于統計某個指標,如最大值、最小值、平均值,可以結合桶聚合一起使用,如按照商品型別分桶,統計每個桶的平均價格,
函式:平均值:Avg、最大值:Max、最小值:Min、求和:Sum、詳細資訊:Stats、數量:Value count
管道聚合
場景:用于對聚合查詢的二次聚合,如統計平均價格最低的商品分類,即先按照商品分類進行桶聚合,并計算其平均價格,然后對其平均價格計算最小值聚合
函式:Min bucket:最小桶、Max bucket:最大桶、Avg bucket:桶平均值、Sum bucket:桶求和、Stats bucket:桶資訊
注意:buckets_path為管道聚合的關鍵字,其值從當前聚合統計的聚合函式開始計算為第一級
// todo 等整理了批量查詢的筆記再把這邊添加上,當前索引下的型別幾乎是text,不太方便
嵌套聚合
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/387820.html
標籤:其他
上一篇:她做銷售6年,從底薪3K轉行程式員狂飆2W,用兩年轉行經歷致想轉行的你
下一篇:淺談Hive
