[Java] Mutil-field terms aggregation fetch the result

Elasticsearch 2.3.0
I want to get the result aggregations use Java. My expected Json result is [{"by_from:{"nearme":xxx,"xiaomi":xxx,"huaweisf":xxx,"qq":xxx}"},{"by_sdkver":{"3.1.4":xxx,"3.0.6":xxx,"3.1.1":xxx}}]. When I use the signal field(by_from) terms aggregation , that is success. But when I use the mutil-field ,like by_from and by_sdkver, the result is so amazing, that is ,{"by_from":{"3.1.4":xxx,"3.0.6":xxx,"3.1.1":xxx}},{"by_sdkver":{"3.1.4":xxx,"3.0.6":xxx,"3.1.1":xxx}} , "by_sdk" and "by_from" have the same content !
The trouble is that I wanna to get the detail "by_from" keys,like "nearme","xiaomi".. I don't know why the result is that. If I want get the expected result ,how should I do?
Mutil-field terms aggregation result:
{
"aggregations" : {
"by_from" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 175,
"buckets" : [ {
"key" : "nearme",
"doc_count" : 514,
"by_sdkver" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [ {
"key" : "3.1.4",
"doc_count" : 492
}, {
"key" : "3.0.6",
"doc_count" : 20
}, {
"key" : "3.1.1",
"doc_count" : 2
} ]
}
}, {
"key" : "xiaomi",
"doc_count" : 426,
"by_sdkver" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [ {
"key" : "3.1.4",
"doc_count" : 410
}, {
"key" : "3.1.1",
"doc_count" : 11
}, {
"key" : "3.0.6",
"doc_count" : 5
} ]
}
}, {
"key" : "huaweisf",
"doc_count" : 202,
"by_sdkver" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [ {
"key" : "3.1.4",
"doc_count" : 202
} ]
}
}, {
"key" : "qq",
"doc_count" : 167,
"by_sdkver" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [ {
"key" : "3.1.4",
"doc_count" : 130
}, {
"key" : "3.0.6",
"doc_count" : 35
}, {
"key" : "3.1.1",
"doc_count" : 2
} ]
}
}]
}
}
}