Elasticsearch 如何使用聚合计算来自多个文档字段的值
Elasticsearch how count values from multiple document fields using aggregation
假设我在同一个索引中有很多文档如下:
"_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
}....
谢谢
{
"size": 0,
"aggs": {
"per_customer": {
"terms": {
"field": "customerId",
"size": 10
},
"aggs": {
"total_price": {
"sum" : { "field" : "price" }
},
"total_revenue": {
"sum" : { "field" : "revenue" }
}
}
}
}
}
假设我在同一个索引中有很多文档如下:
"_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
}....
谢谢
{
"size": 0,
"aggs": {
"per_customer": {
"terms": {
"field": "customerId",
"size": 10
},
"aggs": {
"total_price": {
"sum" : { "field" : "price" }
},
"total_revenue": {
"sum" : { "field" : "revenue" }
}
}
}
}
}