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')
我想实现一个聚合,仅 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')