2015-11-04 55 views
2

版本如何限制嵌套文檔的日期直方圖聚合到特定的日期範圍?

使用Elasticsearch 1.7.2

目的

我想創建由每天的用戶在過去的n天作出的預測數的曲線圖。在這種情況下,10天。

當前查詢

{ 
    "size": 0, 
    "aggs": { 
     "predictions": { 
      "nested": { 
       "path": "user_answers" 
      }, 
      "aggs": { 
       "predictions_over_time": { 
        "date_histogram": { 
         "field": "user_answers.created", 
         "interval": "day", 
         "format": "yyyy-MM-dd", 
         "min_doc_count": 0 
        } 
       } 
      } 
     } 
    } 
} 

問題

這個查詢將返回一個直方圖,但將返回水桶跨所有文檔中的所有可用日期。它不限於特定的日期範圍。

我試過了什麼?

我已經嘗試了很多方法來解決這個問題,所有這些都失敗了。 *範圍過濾器,然後直方圖 *日期範圍內聚集,然後直方圖桶 *使用extended_bounds用,全日期,now-10d也時間戳 *試圖直方圖聚集內部範圍過濾器

任何指導,將不勝感激!謝謝。

+0

等待聽到你的消息。 – piyushGoyal

回答

5

query沒有在這種情況下工作對我來說,我使用的是第三AGGS:

{ 
    "size": 0, 
    "aggs": { 
     "user_answers": { 
      "nested": { "path": "user_answers" }, 
      "aggs": { 
       "timed_user_answers": { 
        "filter": { 
         "range": { 
          "user_answers.created": { 
           "gte": "now", 
           "lte": "now -10d" 
          } 
         } 
        }, 
        "aggs": { 
         "predictions_over_time": { 
          "date_histogram": { 
           "field": "user_answers.created", 
           "interval": "day", 
           "format": "yyyy-MM-dd", 
           "min_doc_count": 0 
          } 
         } 
        } 
       } 
      } 
     } 
    } 
} 

一個aggs指定nested,一個指定filter,最後指定實際的聚合。不知道爲什麼這個語法有意義,但是你似乎無法在相同的aggs上使用兩個。

-1

您需要添加查詢。查詢可以是除post_filter以外的任何內容。它應該嵌套幷包含日期範圍。其中一種方法是定義一個常數分數查詢。在常量分數查詢中,使用應使用範圍過濾器的嵌套過濾器。

{ 
    "query": { 
    "constant_score": { 
     "filter": { 
     "nested": { 
      "path": "user_answers", 
      "filter": { 
      "range": { 
       "user_answers.created": { 
       "gte": "now", 
       "lte": "now -10d" 
       } 
      } 
      } 
     } 
     } 

    } 
    } 
} 

確認這是否適用於您。

+0

'date_histogram'聚合應該放在這個過濾後的查詢中去哪裏?由於分數不相關,我不需要查詢。 –

+0

由於你不需要得分,這就是爲什麼我使用了一個常數得分查詢。其次,您希望始終希望通過設置查詢/過濾器來限制文檔進行聚合。這裏的情況是從現在到現在-10天之間。第三,沒有date_histogram聚合不應該進入這個過濾的查詢。您的完整查詢將是您和我的查詢的組合,您可以刪除最小文檔數。乾杯 – piyushGoyal

+0

不,這不起作用。此外,我不能刪除'min_doc_count',因爲那樣我就不會包含有0個匹配的日期,從而使我的圖形不正確。 –

相關問題