'How to get buckets in nested aggregation even if there is no matched data

I requested like this ( I twigged just some terms for you to understand ) :

{
  "size": 0,
  "aggs": {
    "byMonth": {
      "date_histogram": {
        "field": "date_time",
        "order": {
          "_key": "desc"
        },
        "interval": "month",
        "format": "yyyy-MM",
        "extended_bounds": {
          "max": "2022-02",
          "min": "2022-01"
        }
      },
      "aggs": {
        "byTest": {
          "terms": {
            "field": "test_cate_m",
            "size": 100,
            "order": {
              "_count": "desc"
            }
          }
        }
      }
    }
  }
}

and response is :

{ - 
  "took": 15,
  "timed_out": false,
  "_shards": { - 
    "total": 183,
    "successful": 183,
    "skipped": 0,
    "failed": 0
  },
  "hits": { - 
    "total": { - 
      "value": 10000,
      "relation": "gte"
    },
    "max_score": null,
    "hits": [ - 

    ]
  },
  "aggregations": { - 
    "byMonth": { - 
      "buckets": [ - 
        { - 
          "key_as_string": "2022-02",
          "key": 1643673600000,
          "doc_count": 600,
          "byTest": { - 
            "doc_count_error_upper_bound": 0,
            "sum_other_doc_count": 0,
            "buckets": [ - 
              { - 
                "key": "test1",
                "doc_count": 100
              },
              { - 
                "key": "test2",
                "doc_count": 200
              },
              { - 
                "key": "test3",
                "doc_count": 300
              }
            ]
          }
        },
        { - 
          "key_as_string": "2022-01",
          "key": 1640995200000,
          "doc_count": 100,
          "byTest": { - 
            "doc_count_error_upper_bound": 0,
            "sum_other_doc_count": 0,
            "buckets": [ - 
              { - 
                "key": "test3",
                "doc_count": 100
              }
            ]
          }
        }
      ]
    }
  }
}

in the nested buckets, there are no 'test1' , 'test2'. I'd like to get 'test1' and 'test2' in the buckets for comparison with both, even if there is no data.

and if i can, can i calculate with those both result within the query? like, i'd like to compare the each of key's doc_count in one query, not only just get the data. Can i do this?

If you help me out, it'll be a huge help :)



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source