gpt4 book ai didi

ElasticSearch 聚合使用 doc_count 进行平均

转载 作者:行者123 更新时间:2023-11-29 02:48:46 24 4
gpt4 key购买 nike

我正在深入研究 ElasticSearch 1.0 中的新聚合函数。我正在尝试获取有关一堆文档(日志行)的一些统计数据。

每个文档都算作一次点击,我想获取给定时间段内每小时的平均点击数。每个文档都有一个日期时间引用,每个文档都算作一次“命中”。

第一步很简单(查询和过滤),我得到了在给定时间段内我想要匹配的所有文档。但我不知道如何获得文档计数的平均值。

我可以获得每天、每小时所有文档的列表,并在客户端进行一些统计计算,但我希望所有这些都在 ElasticSearch 中完成。我猜这可以通过 doc_count 完成,但我找不到任何相关信息。

在给定的时间范围内,我可以在一个小时内获得所有文档的列表。如果我在一个小时内用总计尝试这个:

"aggregations" : {
"articles_over_time" : {
"histogram" : {
"script" : "doc['created_at'].date.hourOfDay",
"interval" : 1
}
}
}

我在给定时间段内每小时得到一份文档列表,但它们是 sum()' 在一起的,我希望得到一个平均值(或者更好:实际的“统计数据”聚合)。不是在文档字段上,而是在 doc_count 本身上。有什么想法吗?

最佳答案

这可以从服务器端本身完成,但使用变通方法。hits.total 应该给出文档的总数。您可以在时间戳字段上进行最小和最大统计,并从中计算总小时数。现在

(hits.total)/(Total Number of hours) 

应该给你你正在寻找的东西。

还有另一种方法。您可以使用指标聚合脚本功能通过脚本执行上述操作。链接 - http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-aggregations-metrics-scripted-metric-aggregation.html

但是,您正在寻找的真正功能称为 metric reducer。它目前不可用,但随后出现问题 - https://github.com/elasticsearch/elasticsearch/issues/8110

关于ElasticSearch 聚合使用 doc_count 进行平均,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21783476/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com