如何将每个文档的计数乘以其中的值?

时间:2017-03-18 12:52:34

标签: elasticsearch nosql-aggregation nosql

假设我有很多这样的文件:

{
    "foo": "Something",
    "bars":
    [
        {
            "identifier": 1,
            "content": "meh",
            "quantity": 2
        },
        {
            "identifier": 2,
            "content": "bah",
            "quantity": 1
        }
    ]
}

如果考虑公式出现次数*数量,我如何查询前10个最强柱[]。标识符

编辑:我实现了类似的目标

{
   "size":0,
   "aggs":{
      "bars":{
         "nested":{
            "path":"bars"
         },
         "aggs":{
            "top-terms-aggregation":{
               "terms":{
                  "field":"bars.identifier",
                  "size":10
               }
            }
         }
      }
   }
}

但仍不能乘以数量字段。

1 个答案:

答案 0 :(得分:1)

我使用与此类似的查询实现了这一目标:

{
    "query": {
        "match_all": {}
    },
    "size": 0,
    "aggs": {
        "bars": {
            "nested": {
                "path": "bars"
            },
            "aggs": {
                "bars_group": {
                    "terms": {
                        "field": "bars.identifier",
                        "size": 10,
                        "order": {
                            "count_bars": "desc"
                        }
                    },
                    "aggs": {
                        "count_bars": {
                            "sum": {
                                "field": "bars.quantity"
                            }
                        }
                    }
                }
            }
        }
    }
}

我希望这对你有帮助。