如何过滤由于嵌套聚合而产生的doc_count值? 这是我的查询:
"aggs": {
"CDIDs": {
"terms": {
"field": "CDID.keyword",
"size": 1000
},
"aggs": {
"my_filter": {
"filter": {
"range": {
"transactionDate": {
"gte": "now-1M/M"
}
}
}
},
"in_active": {
"bucket_selector": {
"buckets_path": {
"doc_count": "_count"
},
"script": "params.doc_count > 4"
}
}
}
}
}
查询结果如下:
{
"aggregations" : {
"CDIDs" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 2386,
"buckets" : [
{
"key" : "1234567",
"doc_count" : 5,
"my_filter" : {
"doc_count" : 4
}
},
{
"key" : "12345",
"doc_count" : 5,
"my_filter" : {
"doc_count" : 5
}
}
]
}
}
}
我正在尝试在此处过滤第二个doc_count值。假设我想拥有大于4的文档,因此结果应该是doc_count = 5的存储桶中只有一个聚合结果。有人可以帮我做这个过滤器吗?请让我知道是否需要其他信息。
答案 0 :(得分:1)
仔细查看bucket_selector聚合。您只需要在buckets_path
部分中指定聚合名称,即"doc_count":
"my_filter>_count"
管道聚合(buckets_path)有其自己的语法,其中>
充当分隔符。有关更多信息,请参阅此LINK。
POST <your_index_name>/_search
{
"size":0,
"aggs":{
"CDIDs":{
"terms":{
"field":"CDID.keyword",
"size":1000
},
"aggs":{
"my_filter":{
"filter":{
"range":{
"transactionDate":{
"gte":"now-1M/M"
}
}
}
},
"in_active":{
"bucket_selector":{
"buckets_path":{
"doc_count":"my_filter>_count"
},
"script":"params.doc_count > 4"
}
}
}
}
}
}
希望有帮助!