Elasticsearch Java API :文档计数的聚合过滤器

Elasticsearch Java API : Aggregation Filter for document counts

我想实现一个聚合,仅 returns 频率高于特定阈值的文档。

例如,这是获取所有文档及其计数的聚合

AggregationBuilder aggregation = AggregationBuilders
                .terms("agg").field("column_name");

所以这为我提供了 column_name

中每个值的文档计数
[{"doc_count":30,"key":"val1"},{"doc_count":29,"key":"val2"},{"doc_count":23,"key":"val3"}]

现在,假设我不想要所有这些文件。我只想要 doc_count 大于 25

的那些

所以理想的结果是

[{"doc_count":30,"key":"val1"},{"doc_count":29,"key":"val2"}]

如何将这样的过滤器应用于我的聚合?我正在查看 FilterBuilders 和过滤器聚合,但它们用于对文档中的任何值应用过滤器。例如,我可以应用过滤器以仅获取 val1 == xza for column_name

的文档

但这不是我要找的。我想在应用聚合后为 doc_cunt 值应用阈值。

这可能吗?我正在使用 elasticsearch java api 版本 1.7.2

术语聚合有一个名为 min_doc_count 的内置选项。参见 here for their documentation on it. I haven't used Java API, but this example 似乎在示例中使用 .minDocCount() (ctrl-f 'minDocCount')