我有一个与此类似的问题:如何过滤字段更大而不是Kibana上的计数器? https://github.com/elastic/kibana/issues/9684
在此链接上,有一个完美的答案:您需要在Json Input Advanced Bucket Option上使用“ {'min_doc_count':X}”。完美,它的运行方式与我想要的完全一样,只是因为我想要相反的内容,例如“ max_doc_count”。
令我惊讶的是,这个选项不存在……有人知道“ max_doc_count”相当于什么?
在SQL中将类似于:GROUP BY my_field HAVING COUNT(*)<3
谢谢。
答案 0 :(得分:2)
在ES中执行此操作的正确方法是将bucket_selector
pipeline aggregation与special _count
path一起使用。
POST /_search
{
"size": 0,
"aggs": {
"my_terms": {
"terms": {
"field": "my_field.keyword"
},
"aggs": {
"max_doc_count": {
"bucket_selector": {
"buckets_path": {
"count": "_count"
},
"script": {
"source": "params.count < 3"
}
}
}
}
}
}
}
结果中,my_terms
聚合将仅包含文档计数为<3的存储桶。无需订购任何东西或对您的应用程序进行编程以忽略任何东西。