elasticsearch - Elasticsearch DSL过滤器,用于聚合和扩展统计信息

标签 elasticsearch elasticsearch-aggregation elasticsearch-dsl

如果我使用带有指标的aggregations.bucket,该如何对其进行过滤以控制回溯期?同样,是否可以将过滤器以相同的方式用于扩展统计信息?这是一个有效的代码片段(以及我想使用的那种过滤器):

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')
谢谢!

最佳答案

可以在查询级别应用过滤器,这将减少需要在其上计算聚合的文档数量。 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')

关于elasticsearch - Elasticsearch DSL过滤器,用于聚合和扩展统计信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63056160/

相关文章:

elasticsearch - 如何标记star ('*')?

elasticsearch - 如何按指标结果对聚合分区进行排序?

python - 我如何构建动态查询elasticsearch dsl python

elasticsearch - Elasticsearch-返回嵌套结果的子集

elasticsearch - ElasticSearch 中的复合词处理 - 将 "splitted"和 "joined"形式视为相同

Elasticsearch 突出显示数组,如何返回整个数组

elasticsearch - 如何使用Elasticsearch 7+ Java API在对象内搜索数据

elasticsearch - 如何在Kibana中的两个过滤器之间汇总数据?

elasticsearch - 合并多个聚合的结果

python-2.7 - 带有条件和范围的elasticsearch-dsl-py查询过滤器