0

我想实现一个只返回频率高于某个阈值的文档的聚合。

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

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文件column_name

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

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

4

1 回答 1

1

术语聚合有一个内置选项,称为min_doc_count. 有关他们的文档,请参见此处。我没用过Java API,但是这个例子好像用.minDocCount()在一个例子里(ctrl-f 'minDocCount')

于 2016-10-20T13:32:50.200 回答