嵌套聚合过滤器

时间:2018-09-20 15:32:39

标签: elasticsearch

我有一个包含客户的索引。喜欢/ customers。有一个嵌套的属性映射,其中包含日期和总数。

例如:

"properties": [
     "invoices": [
         "type": "nested",
         "properties": [
             "from_date": [
                    type: "date",
                    "format": "dd.MM.yyyy HH:mm"
             ],
             "revenue": [
                    type: "double"
             ],
         ]
     ],
]

我想选择按特定时间范围内的收入排序的客户。因此,必须汇总嵌套属性的子列表。这必须类似于嵌套聚合过滤器。但是,我正在努力将过滤器和聚合结合起来。我要么收到当年的总和(因此不按客户分组),要么返回总收入(未按时间间隔过滤)。

对我来说,如果我能得到一份订购的客户清单,那就足够了。我不需要客户收入的确切价值。所以这是我尝试过的:

[
    "aggs: [
        "revenueForTime": [
            "nested": [
                "path": "invoices.revenue"
                "score_mode": "sum",
            ]
            "aggs": [
                "filtered": [
                    "filter": [
                        "range": [
                            "invoices.from_date":  [
                                "gt": it.value["from"].format("dd.MM.yyyy HH:mm")    
                            ]
                        ]
                    ],
                ],
                "aggs": [
                     "sum_revenue": [
                          "reverse_nested": [:],
                     ]
                ]
            ]
        ]
    ]
]

当前,这给了我语法错误。将所有查询条件放在每个文档的汇总位置在哪里?我没有找到关于此基本问题的有用文章或StackOverflow问题。

0 个答案:

没有答案