非嵌套格式需要过滤的聚合查询输出

时间:2019-04-30 12:31:03

标签: elasticsearch

我有以下查询,该查询以嵌套格式提供所需的输出。

{
  "size": 0,
  "aggs": {
    "Pre_Post": {
      "filters": {
        "filters": {
          "PRE": {
            "range": {
              "mydate": {
                "gte": "2017-12-31||-6M",
                "lte": "2017-12-31"
              }
            }
          },
          "POST": {
            "range": {
              "mydate": {
                "gte": "2018-08-01",
                "lte": "2018-08-07"
              }
            }
          }
        }
      },
      "aggs": {
        "dimension1": {
          "terms": {
            "field": "myType.keyword"
          },
          "aggs": {
            "sales": {
              "sum": {
                "field": "sales"
              }
            }
          }
        }
      }
    }
  }
}

上述输出的格式大致为

"PRE_POST": {
    "PRE": {
        "buckets": {
            "dimension1": {
                "key": "field1",
                "buckets": {
                    "sales": 50
                }
            }
        }
    }
}

有没有办法以非嵌套格式获取此内容,例如复合查询所提供的格式,而嵌套度则更低。

所需的样本输出类似

"PRE_POST": {
    "Key1": "PRE",
    "dimension1": "field1",
    "buckets": {
        "sales": 50
    }
}

我尝试了复合,但是复合不允许过滤器。 我已经尝试使用PRE_POST作为脚本字段进行复合,但是非常慢。 我还尝试了邻接矩阵,其中两个过滤器用于PRE和POST,其他过滤器用于每个Dimension1字段。但这会返回过多的不必要数据。

有没有什么方法或方法想让我以更少的嵌套格式获取输出。

0 个答案:

没有答案