我想实现一个聚合,仅返回频率高于特定阈值的文档。
例如,这是获取所有文档及其计数的汇总
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
最佳答案
术语聚合具有一个内置选项min_doc_count
。有关它们的文档,请参见here。我没有使用过Java API,但this example在示例中似乎使用了.minDocCount()
(ctrl-f'minDocCount')
关于elasticsearch - Elasticsearch Java API:用于文档计数的聚合过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40155618/