我在elasticsearch(版本:1.7.1)中遇到了一個混淆。根據文檔https://www.elastic.co/guide/en/elasticsearch/guide/current/_filtering_queries_and_aggregations.html,應用於查詢的過濾器也將應用於聚合。當我發出以下查詢時,我收到了意想不到的結果。Elasticsearch範圍過濾器不能在日期直方圖中工作
{
"aggregations": {
"outer": {
"aggregations": {
"inner": {
"date_histogram": {
"extended_bounds": {
"min": 0
},
"field": "time",
"interval": "30d",
"min_doc_count": 0,
"order": {
"_key": "desc"
}
}
}
},
"terms": {
"field": "ad_id",
"size": 10
}
}
},
"query": {
"filtered": {
"filter": {
"and": {
"filters": [
{
"range": {
"time": {
"from": 1441619173000,
"include_lower": false,
"include_upper": true,
"to": 1442835370000
}
}
}
]
}
}
}
}
}
結果的一部分在這裏。
{
"buckets": [
{
"key": 203737,
"doc_count": 27,
"inner": {
"buckets": [
{
"key_as_string": "2015-09-02T00:00:00.000Z",
"key": 1441152000000,
"doc_count": 27
},
{
"key_as_string": "1970-01-31T00:00:00.000Z",
"key": 2592000000,
"doc_count": 0
},
...
{
"key_as_string": "1970-01-01T00:00:00.000Z",
"key": 0,
"doc_count": 0
}
]
}
}
]
}
請注意,聚集結果包括我已經申請範圍外鍵。時間字段的類型是日期。我也嘗試了下面的查詢,但結果是一樣的。
{
"aggs": {
"outer_filter": {
"filter": {
"and": {
"filters": [
{
"range": {
"time": {
"from": 1441619173000,
"include_lower": false,
"include_upper": true,
"to": 1442835370000
}
}
}
]
}
},
"aggs": {
"outer_term": {
"terms": {
"field": "ad_id",
"size": 10
},
"aggs": {
"inner": {
"date_histogram": {
"extended_bounds": {
"min": 0
},
"field": "time",
"interval": "30d",
"min_doc_count": 0,
"order": {
"_key": "desc"
}
}
}
}
}
}
}
}
}
我的問題是,聚合結果包括( 「來自」:1441619173000, 「到」:1442835370000)的過濾器外的結果。
爲什麼過濾器沒有得到應用? 任何人都可以幫忙。
感謝您的回覆。我嘗試過'gte'和'lte'的範圍過濾器。但仍然令人失望。另一個線索(可能是)我已經存儲了毫秒的時間。它可以導致任何問題? –