更新問題Elasticsearch - 計算相對於嵌套聚集百分比於母公司鬥
在我查詢我的日期彙總,然後在傳感器的名稱。可以根據嵌套聚合和父桶的文檔總數(或任何其他聚合)計算比率?例如查詢:
{
"size": 0,
"aggs": {
"over_time": {
"aggs": {
"by_date": {
"date_histogram": {
"field": "date",
"interval": "1d",
"min_doc_count": 0
},
"aggs": {
"measure_count": {
"cardinality": {
"field": "date"
}
},
"all_count": {
"value_count": {
"field": "name"
}
},
"by_name": {
"terms": {
"field": "name",
"size": 0
},
"aggs": {
"count_by_name": {
"value_count": {
"field": "name"
}
},
"my ratio": count_by_name/all_count * 100 <-- How to do that?
}
}
}
}
}
}
}
}
我想自定義指標,讓我比count_by_name/ALL_COUNT * 100這是可能的ES,還是我來計算在客戶端上? 這對我來說似乎很簡單,但我還沒找到辦法。
舊文章:
有沒有辦法讓Elasticsearch考慮文件的總體數量(或任何其他度量)計算平均值的水桶是什麼時候?
例如: 我有100000個傳感器在不同的時間產生事件。每個事件都被編入索引爲具有時間戳和值的文檔。
當我想計算該值與日期直方圖的比率,並且某些傳感器一次只生成值時,我希望Elasticsearch將傳感器的不存在的值(文檔)視爲0而不是null。因此,當每天聚合並且傳感器僅在晚上10點(3)和晚上11點(5)產生兩個值時,當天的聚合應該是(3 + 5)/ 24或正式:SUM(VALUE)/ 24。
相反,Elasticsearch計算像(3 + 5)/ 2這樣的平均值,在我的情況下這是不正確的。
在Github上有一張票https://github.com/elastic/elasticsearch/issues/9745,但答案是「在你的應用程序中處理它」。這對我來說不是答案,因爲我必須爲每個傳感器/時間組合生成零價值文檔的無數次,才能獲得正確的平均比率。
對此的任何想法?
你能否提供一個樣本文件和您發送的聚合請求 –
我更新了問題並添加了一個示例查詢 –