elasticsearch 在ElasticSearch服务器的aggs查询中,在何处放置数据范围筛选器?,elasticsearch,elasticsearch-5,elasticsearch,elasticsearch 5" /> elasticsearch 在ElasticSearch服务器的aggs查询中,在何处放置数据范围筛选器?,elasticsearch,elasticsearch-5,elasticsearch,elasticsearch 5" />

elasticsearch 在ElasticSearch服务器的aggs查询中,在何处放置数据范围筛选器?

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 } } } }

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

可能会分享你所遇到的错误,因为他们不会说太多: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]')我想看看你的完整查询,而不仅仅是其中的一部分我尝试了几件事,我会一次尝试更新这个问题。老兄,你这个绝对的传奇人物,现在你已经两次修复了我那破屁股的查询。谢谢很酷,很高兴它有帮助!