【问题标题】:Elasticsearch Java API : Aggregation Filter for document countsElasticsearch Java API:文档计数的聚合过滤器
【发布时间】:2017-03-02 12:34:20
【问题描述】:

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

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

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 == xzacolumn_name 的文档

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

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

【问题讨论】:

    标签: elasticsearch elasticsearch-java-api elasticsearch-aggregation


    【解决方案1】:

    术语聚合有一个名为min_doc_count 的内置选项。请参阅here 了解他们的相关文档。我没用过Java API,但是this example在一个例子中好像用了.minDocCount() (ctrl-f 'minDocCount')

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-02
      • 2014-10-09
      • 2015-09-17
      • 2014-02-02
      • 2021-08-04
      • 2020-07-26
      • 1970-01-01
      相关资源
      最近更新 更多