我正在尝试从 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
}