2013-09-28 34 views
1

我正在嘗試執行count查詢,以便返回在最近10分鐘內登錄到我的系統的失敗嘗試次數。我創造了這個查詢:使用Elasticsearch中的範圍和項計數

{ 
    "term": { 
    "success":false 
    }, 
    "range": { 
    "_timestamp": { 
     "gt": "now-10m" 
    } 
    } 
} 

然而,這將返回所有的不成功嘗試的任何時候,無論我在查詢range過濾器。我正確地構造這個查詢嗎?當我使用術語和範圍進行search時,查詢就可以工作。

換句話說,上述查詢和curl -XGET localhost:9200/application/_count的輸出是相同的(我只測試了不成功的嘗試)。

回答

0

range是一個過濾器,所以我認爲你必須創建一個filtered查詢正確地考慮到這一點:

{ 
    "filtered": { 
    "query": { 
     "term": { 
     "success":false 
     }, 
    }, 
    "filter: { 
     "range": { 
     "_timestamp": { 
      "gt": "now-10m" 
     } 
     } 
    } 
    } 
} 
+0

這不工作,仍然給我的輸出'數:4',同一個'GET'請求'本地主機:9200 /應用程序/ _count' – josh

+0

我想我明白了。 '範圍'只是一個過濾器。您必須使用已過濾的查詢。我會更新我的答案。 – mguillermin

+0

同樣的問題...... :(我能夠在使用我的參數進行'search'查詢期間成功地獲得正確的結果,但'count'不會接受它們,並且只在術語之後。 – josh