【问题标题】:Elastic search query max value aggs弹性搜索查询最大值聚合
【发布时间】:2017-12-24 05:31:00
【问题描述】:

我有这样的数据:

Name     Fees Collected     Date
Name1     100              2017-05-01T12:00:00
Name1     200              2017-05-02T12:00:00
Name2     500              2017-05-05T12:00:00
Name2     600              2017-05-06T12:00:00
Name3     1000             2017-05-010T12:00:00
Name3     1100             2017-05-011T12:00:00
Name4     1500             2017-05-011T12:00:00

如何编写查询以将过滤/分组的聚合返回到最大日期,每个组的最小文档计数为 2?

我希望得到以下输出:

Name     Fees Collected   Date  
Name1     200             2017-05-02T12:00:00
Name2     600             2017-05-06T12:00:00
Name3     1100            2017-05-011T12:00:00

最后,我会得到如下聚合

"aggregations" {
    "Fees Collected " : "1900" //(200+600+1100)
    }

有没有办法在弹性搜索中实现这一点? 谢谢。。

【问题讨论】:

    标签: search elasticsearch grouping aggregation


    【解决方案1】:

    有办法!

    首先,您需要在“名称”字段上添加“min_doc_count”:3。 然后是字段“日期”的子 max_aggregation。

    类似这样的:

    "aggs": {
     "split_by_name": {
      "terms": {
        "field": "Name",
        "min_doc_count": 3
      },
      "aggs": {
        "max_date": {
          "max": {
            "field": "Date"
            }
          }
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-14
      • 1970-01-01
      相关资源
      最近更新 更多