基于以下2条消息,我需要根据以下数据进行汇总:
货币。
{
"_source": {
"MyData": {
"MyHeader": {
"granularity": "Level1",
"myType": "YTD",
"businessDate": "2018-12-27"
},
"MyBreakDown": [
{
"category": null,
"Currency": "eur",
"MyDetails": [
{
"Id": 123,
"myLocalAmount": 100
}
]
},
{
"category": null,
"Currency": "clf",
"MyDetails": [
{
"Id": 234,
"myLocalAmount": 130
}
]
},
{
"category": null,
"Currency": "usd",
"MyDetails": [
{
"Id": 120,
"myLocalAmount": 250
}
]
}
]
}
}
}, {
"_source": {
"MyData": {
"MyHeader": {
"granularity": "Level1",
"myType": "MTD",
"businessDate": "2018-12-27"
},
"MyBreakDown": [
{
"category": null,
"Currency": "eur",
"MyDetails": [
{
"Id": 123,
"myLocalAmount": 110
}
]
},
{
"category": null,
"Currency": "clf",
"MyDetails": [
{
"Id": 234,
"myLocalAmount": 120
}
]
},
{
"category": null,
"Currency": "usd",
"MyDetails": [
{
"Id": 120,
"myLocalAmount": 253
}
]
}
]
}
}
}
在这里我可以进行基本聚合:
"aggs":{
"by_granularity":{
"terms":{
"field":"MyHeader.granularity"
},
"aggs":{
"by_myType ":{
"terms":{
"field":"MyHeader.myType"
}
}
}
}
},
"size":0
但是,货币位于数组字段下,无法使用。
我需要帮助,如何在聚合中也使用货币,这样可以为我提供正确的存储桶数据。
期望数据如下:
Level1->YTD->eur = 100
Level1->YTD->clf= 130
Level1->YTD->usd = 250
Level1->MTD->eur = 110
Level1->MTD->clf = 120
Level1->MTD->usd = 253
P.S。该索引不受我们管理,因此我无法在config中进行任何更改。因此,期待看看是否有可能在ES查询中获得此类数据?
答案 0 :(得分:1)
尝试此查询,然后按输出排列数据。
{
"from": 0,
"size": 0,
"_source": {
"includes": [
"MyData.MyBreakDown.MyDetails.myLocalAmount"
],
"excludes": []
},
"stored_fields": "MyData.MyBreakDown.MyDetails.myLocalAmount",
"aggregations": {
"MyData.MyHeader.granularity": {
"terms": {
"field": "MyData.MyHeader.granularity",
"size": 200,
"min_doc_count": 1,
"shard_min_doc_count": 0,
"show_term_doc_count_error": false,
"order": [
{
"_count": "desc"
},
{
"_key": "asc"
}
]
},
"aggregations": {
"MyData.MyHeader.myType": {
"terms": {
"field": "MyData.MyHeader.myType",
"size": 10,
"min_doc_count": 1,
"shard_min_doc_count": 0,
"show_term_doc_count_error": false,
"order": [
{
"_count": "desc"
},
{
"_key": "asc"
}
]
},
"aggregations": {
"MyData.MyBreakDown.Currency": {
"terms": {
"field": "MyData.MyBreakDown.Currency",
"size": 10,
"min_doc_count": 1,
"shard_min_doc_count": 0,
"show_term_doc_count_error": false,
"order": [
{
"_count": "desc"
},
{
"_key": "asc"
}
]
},
"aggregations": {
"MyData.MyBreakDown.MyDetails.myLocalAmount": {
"terms": {
"field": "MyData.MyBreakDown.MyDetails.myLocalAmount",
"size": 10,
"min_doc_count": 1,
"shard_min_doc_count": 0,
"show_term_doc_count_error": false,
"order": [
{
"_count": "desc"
},
{
"_key": "asc"
}
]
}
}
}
}
}
}
}
}
}
}