我正在尝试创建一个聚合,但是结果因元数据而metadata肿,不适合我的用例。
这是我的汇总定义;
"aggs": {
"attributes": {
"nested": {
"path": "attributes"
},
"aggs": {
"facet_name": {
"terms": {
"field": "attributes.name.keyword"
},
"aggs": {
"facet_value": {
"terms": {
"field": "attributes.value.keyword"
}
}
}
}
}
}
},
我尝试获取与此类似的数据结构;
[{
"name": "Materiał",
"values": ["stal", "drewno"...]
},
{
"name": "Kolor",
"values": ["czarny", "kolorowy"...]
]
代替下面的结果集是当前的聚合响应;
"aggregations" : {
"attributes" : {
"doc_count" : 142307,
"facet_name" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 38074,
"buckets" : [
{
"key" : "Materiał",
"doc_count" : 21811,
"facet_value" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 4977,
"buckets" : [
{
"key" : "stal",
"doc_count" : 3141
},
{
"key" : "drewno",
"doc_count" : 2944
},
{
"key" : "szkło",
"doc_count" : 2885
},
{
"key" : "tworzywo sztuczne",
"doc_count" : 1529
},
{
"key" : "metal",
"doc_count" : 1303
},
...
这是我能得到的最接近的结果。
我找不到如何重组结果对象或从聚合中删除元数据的方法。
答案 0 :(得分:1)
不幸的是,您无法更改响应主体的结构来实现所需的结果。这就是Elasticsearch REST API的实现方式。
您将不得不遍历buckets数组并通过提取特定值来创建自己的结构/对象。