如何在过滤掉某些值的 ElasticSearch 中应用 post 过滤器?
How to apply post filter in ElasticSearch that filters out certain values?
我想过滤扩展统计信息聚合返回的统计信息。我基本上需要过滤掉 avg
为 0.
的所有值
下面是一个示例查询,我需要在其中过滤这些值。我想我应该申请 post_filter
。但是,当我想过滤掉特定值时,我不确定应该如何应用 post 过滤器。你能帮忙吗?
"aggs": {
"variable_grp": {
"terms": {
"field": "variable",
"size": 200,
"order": { "stats.avg": "asc" }
},
"aggs": {
"stats": {
"extended_stats": { "field": "value_num" }
}
}
}
},
"size":0
您可以使用 bucket_selector
管道聚合来实现您想要的:
{
"aggs": {
"variable_grp": {
"terms": {
"field": "variable",
"size": 200,
"order": {
"stats.avg": "asc"
}
},
"aggs": {
"stats": {
"extended_stats": {
"field": "value_num"
}
},
"avg_gt_0": {
"bucket_selector": {
"buckets_path": {
"avgStats": "stats.avg"
},
"script": "params.avgStats > 0"
}
}
}
}
}
}
我想过滤扩展统计信息聚合返回的统计信息。我基本上需要过滤掉 avg
为 0.
下面是一个示例查询,我需要在其中过滤这些值。我想我应该申请 post_filter
。但是,当我想过滤掉特定值时,我不确定应该如何应用 post 过滤器。你能帮忙吗?
"aggs": {
"variable_grp": {
"terms": {
"field": "variable",
"size": 200,
"order": { "stats.avg": "asc" }
},
"aggs": {
"stats": {
"extended_stats": { "field": "value_num" }
}
}
}
},
"size":0
您可以使用 bucket_selector
管道聚合来实现您想要的:
{
"aggs": {
"variable_grp": {
"terms": {
"field": "variable",
"size": 200,
"order": {
"stats.avg": "asc"
}
},
"aggs": {
"stats": {
"extended_stats": {
"field": "value_num"
}
},
"avg_gt_0": {
"bucket_selector": {
"buckets_path": {
"avgStats": "stats.avg"
},
"script": "params.avgStats > 0"
}
}
}
}
}
}