1. 程式人生 > 實用技巧 >ES查詢直方圖聚合區間結果min越界問題

ES查詢直方圖聚合區間結果min越界問題

● 系統環境說明

Linux環境:centos 7.2
騰訊雲ES Service:7.5.1
Java:1.8.0_181

● 叢集配置

標準型32核64GB, 3個(主節點)
50GB 高效能雲盤 x1

標準型32核64GB, 12個(資料節點)
6000GB SSD雲硬碟 x2

問題

ES查詢直方圖資料,結果明顯發生了越界:

問題原因

這裡的越界其實是符合預期的,因為真正的邊界取決於interval,而不是min,所表現出的特徵是:
結果中看到的最小key(1607040000000000),可以被interval(864000000000)所整除

當extended_bounds.min不被interval整除的時候,預設的最小值為:

key = extended_bounds.min - (extended_bounds.min % interval)

解決方法

histogram提供了offset,以偏移桶的邊界,演算法是:

offset = extended_bounds.min % interval

正確的做法是出現這種情況時,設定offset值,這樣最小key就會等於extended_bounds.min,問題就會得到解決。

offset原理:
https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-histogram-aggregation.html#_offset_2