【问题标题】:Elasticsearch DSL filter on aggregation and extended statsElasticsearch DSL 过滤聚合和扩展统计信息
【发布时间】:2020-11-13 07:00:24
【问题描述】:

如果我将 aggregations.bucket 与指标一起使用,我该如何过滤它以控制回溯期?同样,过滤器可以以相同的方式用于扩展统计信息吗?这是一个有效的代码 sn-p(以及我想使用的过滤器类型):

s = Search(using=client)
s.aggs.bucket('some_bucket_by_day', 'date_histogram', field='time_field', interval='day')
        .metric('some_avg', 'avg', field='some_field')

尝试像这样过滤:

filter='range', **{'time_field': {'gte': 'now-10d'}}

如果使用extended_stats,过滤器也可以工作吗?

s.aggs.bucket('exchange_stats', 'extended_stats', field='some_field')

谢谢!

【问题讨论】:

    标签: elasticsearch elasticsearch-aggregation elasticsearch-dsl


    【解决方案1】:

    过滤器可以在查询级别应用,这将减少需要计算聚合的文档数量。 extended_stats 也是一个度量聚合,而不是一个桶聚合。所以你可以这样做:

    // create search and filter the document by date
    s = Search(using=client)
         .filter('range', time_field={'gte': 'now-10d'})
    
    // add some aggregations
    s.aggs.bucket('some_bucket_by_day', 'date_histogram', field='time_field', interval='day')
         .metric('some_avg', 'avg', field='some_field')
         .metric('exchange_stats', 'extended_stats', field='some_field')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-17
      相关资源
      最近更新 更多