elasticsearch 在ElasticSearch服务器的aggs查询中,在何处放置数据范围筛选器?
我正在尝试从ElasticSearch服务器获取特定日期范围内的文档计数。查询的用途是:
elasticsearch 在ElasticSearch服务器的aggs查询中,在何处放置数据范围筛选器?,
elasticsearch,
elasticsearch-5,
elasticsearch,
elasticsearch 5,我正在尝试从ElasticSearch服务器获取特定日期范围内的文档计数。查询的用途是: # Build ID query body = { "size": 0, "aggs": { "unique_id": { "terms": { "field": "id.keyword", "size": 1000000 } } } }
# 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
}
可能会分享你所遇到的错误,因为他们不会说太多:File“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/elasticsearch/connection/base.py”,第125行,在_raise\u error raise HTTP\u EXCEPTIONS.get(状态代码,传输错误)(状态代码,错误消息,其他信息)elasticsearch.exceptions.RequestError:TransportError(400,'unknown_named_object_exception','unknown BaseAgregationBuilder[bool]')我想看看你的完整查询,而不仅仅是其中的一部分我尝试了几件事,我会一次尝试更新这个问题。老兄,你这个绝对的传奇人物,现在你已经两次修复了我那破屁股的查询。谢谢很酷,很高兴它有帮助!