【问题标题】:Average bucket aggregation including 0 values平均桶聚合,包括 0 个值
【发布时间】:2019-05-05 23:35:22
【问题描述】:

在我没有每天的输入数据的情况下,我使用 ES 来获取每天的统计数据,但丢失的数据也是这样的信息(在我的情况下,我正在测量一项活动)。为了完成这样的任务,我使用average bucket aggregation 并将 min_doc_count 设置为 0,以便即使我的数据丢失也有一个值。我的查询如下:

query = {
 "size": 0,
   "query": {
        "bool" : {
            "should" :{
                "match" : { "LogEntryType" : "LogEntry" }    
            },
            "must" : {
                'match' : {'Id' : id}
            }
        }

    },
  "aggs": {
    "actions_per_day": {
      "date_histogram": {
        "field": "CreationTime",
        "interval": "day",
          "min_doc_count" : 0
      },
      "aggs": {
        "amount": {
          "value_count": {
            "field": "CreationTime"
          }
        }
      }
    },
    "avg_daily_action": {
      "avg_bucket": {
        "buckets_path": "actions_per_day>amount"
      }
    }
  }
 }
 es1.search(index=indx1, body=query)

它确实返回值设置为 0 的对象,正如您在以下响应摘录中所见:

{'took': 1,
'timed_out': False,
'_shards': {'total': 2, 'successful': 2, 'failed': 0},
'hits': {'total': 4321, 'max_score': 0.0, 'hits': []},
'aggregations': {'actions_per_day': {'buckets': [
{'key_as_string': '2018-07-13T00:00:00.000Z',
 'key': 1531440000000,
 'doc_count': 631,
 'amount': {'value': 631}},
{'key_as_string': '2018-07-14T00:00:00.000Z',
 'key': 1531526400000,
 'doc_count': 0,
 'amount': {'value': 0}}...

但我的问题是,对于平均每日动作,计算不考虑 0 值,它返回:

...'avg_daily_action': {'value': 432.1}

这对应于不考虑没有输入的天数的平均值。我找到了this issue,其中提到我应该使用“缺失”参数,但是我认为它是用 0 检索元素,并且我已经有了它们。关于如何考虑它们的任何线索?

【问题讨论】:

    标签: python elasticsearch elasticsearch-aggregation elasticsearch-py


    【解决方案1】:

    原来我快到了。必须在平均桶聚合中使用 gap_policy 参数来考虑 0 值。平均桶部分现在变成了

     "avg_daily_operations": {
          "avg_bucket": {
            "buckets_path": "modifications_per_day>amount",
              "gap_policy" : "insert_zeros"
          }
     }
    

    默认值设置为skip,更改它即可解决问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-06
      • 1970-01-01
      • 2021-08-12
      • 1970-01-01
      • 2019-10-02
      • 2021-01-20
      • 2015-12-29
      相关资源
      最近更新 更多