elasticsearch 7 聚合統計 分組聚合

2021-09-03 07:15:57 字數 2184 閱讀 1028

原文:

get /index/type/_search

}}}

返回值表示,[15,20)區間內的值有1個,[20,25)區間內的值有0個,[25,30)區間內的值有1個,[30,35)區間內的值有1個。

,,,

]}

}}

1、直方圖篩選規則

舉個例子,有乙個price欄位,這個字段描述了商品的**,現在想每隔5就建立乙個桶,統計每隔區間都有多少個文件(商品)。

如果有乙個商品的**為32,那麼它會被放入30的桶中,計算的公式如下:

rem = value % interval

if (rem < 0)

bucket_key = value - rem

通過上面的方法,就可以確定文件屬於哪乙個桶。

不過也有一些問題存在,由於上面的方法是針對於整型資料的,因此如果欄位是浮點數,那麼需要先轉換成整型,再呼叫上面的方法計算。問題來了,正數還好,如果該值是負數,就會出現計算出錯。比如,乙個欄位的值為-4.5,在進行轉換整型時,轉換成了-4。那麼按照上面的計算,它就會放入-4的桶中,但是其實-4.5應該放入-6的桶中。

2、extended_bounds

extended_bounds可以強制直方圖聚合從指定最小值開始建立分組,直到最大值,即使沒有任何文件存在。

extended_bounds不會過濾分組,即使實際上的分組不在extended_bounds的最小值最大值區間內,直方圖聚合依然以實際的最小值或最大值建立分組。

get /index/type/_search}}

}}

3、排序

按直方圖分組的key排序:

get /index/type/_search}}

}}

按直方圖分組的value排序:

get /index/type/_search}}

}}

4、偏移

分組預設從0開始以interval為間隔步進,可以通過offset修改分組的開始位置。

get /index/type/_search

}}}

get /index/type/_search

}}}

interval支援的表示式有:year、month、week、day、hour、quarter、minute、second。

get /index/type/_search]}

}}}

get /index/type/_search]}

}}}

get /index/type/_search}},

"filter": }}

}}}

等價於批量過濾聚合。

get /index/type/_search}},

"filters": }},

"test_range2" :}}

}}

}}}

get /testindex/testtype/_search

}}}

通過制定欄位的值統計聚合。

get /index/type/_search

}}}

1、規模

通過size引數指定返回的分組數量,size設定為0表示規模大小為integer.max_value

2、排序

通過order自定義分組排序方式,預設根據分組的doc_count值降序排序。

get /testindex/testtype/_search}}

}}

3、過濾

get /testindex/testtype/_search

}}}

elasticsearch 7 單機配置

elasticsearch 7.0.0 新版更新,填個坑 error1 cluster.initial master nodes is empty on this node error 2 the default discovery settings are unsuitable for produ...

ElasticSearch 7 常見的字段型別

用於全文索引,該型別的字段將通過分詞器進行分詞 不分詞,只能搜尋該字段的完整的值 long,integer,short,byte,double,float,half float,scaled float 該型別的字段把值當做經過 base64 編碼的字串,預設不儲存,且不可搜尋 範圍型別表示值是乙個...

ELK之elasticsearch7版本集群設定

elk7版本搭建參考 node 1已經安裝配置好 配置檔案如下 新建主機node 2修改elasticsearch配置檔案 etc elasticsearch elasticsearch.yml 集群名需要和node 1一致 cluster.name my es node名 集群中兩個節點的ip 啟...