基于聚合和扩展统计的Elasticsearch DSL过滤器

基于聚合和扩展统计的Elasticsearch DSL过滤器,
Warning: implode(): Invalid arguments passed in /data/phpspider/zhask/webroot/tpl/detail.html on line 45
,,如果我使用aggregations.bucket和一个度量,我如何过滤它来控制回望期?同样,对于扩展统计数据,是否可以以相同的方式使用过滤器?下面是一个有效的代码片段(以及我想使用的过滤器类型): 尝试以如下方式进行筛选: filter='range', **{'time_field': {'gte': 'now-10d'}} // create search and filter the document by date s = Search(using=client) .filt

如果我使用aggregations.bucket和一个度量,我如何过滤它来控制回望期?同样,对于扩展统计数据,是否可以以相同的方式使用过滤器?下面是一个有效的代码片段(以及我想使用的过滤器类型):

尝试以如下方式进行筛选:

filter='range', **{'time_field': {'gte': 'now-10d'}}
// 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')
此外,如果使用扩展的_统计数据,过滤器也可以工作吗

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

谢谢

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

filter='range', **{'time_field': {'gte': 'now-10d'}}
// 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')