我想实现一个只返回频率高于某个阈值的文档的聚合。
例如,这里是获取所有文档及其计数的聚合
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