【问题标题】:Elasticsearch how count values from multiple document fields using aggregationElasticsearch如何使用聚合计算来自多个文档字段的值
【发布时间】:2016-11-21 01:38:58
【问题描述】:

假设我在同一个索引中有很多文档,如下所示:

     "_source": {
            "customerId": "100",
            "firstName": "XAaa",
            "lastName": "XBbb",
            "price": 10,
            "revenue": 5
         }

     "_source": {
            "customerId": "100",
            "firstName": "XAaa",
            "lastName": "XBbb",
            "price": 20,
            "revenue": 15
        } 

    "_source": {
            "customerId": "200",
            "firstName": "YAaa",
            "lastName": "yBbb",
            "price": 110,
            "revenue": 20
       }....

问题

如何让 elasticsearch 聚合计算来自同一个 customerId 的值??

结果应该是这样的:

          "_source": {
                "customerId": "100",
                "firstName": "XAaa",
                "lastName": "XBbb",
                "price": 30, // (10+20)
                "revenue": 20 //(5+15)
            } 

        "_source": {
                "customerId": "200",
                "firstName": "YAaa",
                "lastName": "yBbb",
                "price": 110,
                "revenue": 20
           }....

谢谢

【问题讨论】:

    标签: java elasticsearch lucene aggregation elastic-stack


    【解决方案1】:
    {
      "size": 0, 
      "aggs": {
        "per_customer": {
          "terms": {
            "field": "customerId",
            "size": 10
          },
          "aggs": {
            "total_price": {
              "sum" : { "field" : "price" }
            },
            "total_revenue": {
              "sum" : { "field" : "revenue" }
            }
          }
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-22
      • 1970-01-01
      • 2020-11-13
      • 2016-04-14
      相关资源
      最近更新 更多