在 ElasticSearch 服务器的聚合查询中将数据范围过滤器放在哪里?

Where to put data range filter in aggs query for ElasticSearch server?

我正在尝试从 ElasticSearch 服务器获取特定日期范围内的文档计数。正在使用的查询是:

# Build ID query
body = {
    "size": 0,
    "aggs": {
        "unique_id": {
            "terms": {
                "field": "id.keyword",
                "size": 1000000
            }
        }
    }
}

我现在必须在其中添加一个时间范围过滤器,但在尝试了几种方法之后,我仍然一无所获。总是得到错误,我的查询是错误的。我应该把过滤器放在哪里?我想我必须添加的密钥应该是这样的:

 'filter': {
     'bool': {
         'must': {
             'range': {
                  'startTime': {
                        'format': "yyyy-MM-dd'T'HH:mm:ss.SSS",
                        'gte': '2017-01-01T00:00:00.000',
                        'lte': '2020-01-01T00:00:00.000'
                                    }
                                }
                            }
                        }
                    }
                }

附带说明一下,我真的不喜欢如何将这些查询放在一起。非常违反直觉,至少对我而言。

编辑:这是我失败的尝试之一:

{
    'aggs': {
        'unique_id': {
            'aggs': {
                'filter': {
                    'bool': {
                        'must': {
                            'range': {
                                'startTime': {
                                    'format': "yyyy-MM-dd'T'HH:mm:ss.SSS",
                                    'gte': '2017-01-01T00:00:00.000',
                                    'lte': '2020-01-01T00:00:00.000'
                                }
                            }
                        }
                    }
                }
            },
            'terms': {
                'field': 'id.keyword',
                'size': 1000000
            }
        }
    },
    'size': 0
}

试试这个:

{
    'query': {
        'bool': {
           'filter': {
              'range': {
                   'startTime': {
                       'format': "yyyy-MM-dd'T'HH:mm:ss.SSS",
                       'gte': '2017-01-01T00:00:00.000',
                       'lte': '2020-01-01T00:00:00.000'
                    }
                }
            }
        }
    },
    'aggs': {
        'unique_id': {
            'terms': {
                'field': 'id.keyword',
                'size': 1000000
            }
        }
    },
    'size': 0
}