2017-01-16 166 views
0

我正在尋找幫助來構建查詢,該查詢將檢索給定時間範圍內文檔的最後數量,例如最近30分鐘。 的文件就像系統日誌:基於時間戳的GET查詢

{ 
"_index": "logstash-2017.01.16", 
"_type": "syslog", 
"_id": "AVmnIUFGd2leAWt2KJSr", 
"_score": 1, 
"_source": { 
"@timestamp": "2017-01-16T11:54:48.318Z", 
"syslog_severity_code": 5, 
"syslog_facility": "user-level", 
"@version": "1", 
"host": "10.0.0.1", 
"syslog_facility_code": 1, 
"message": "Test Syslog Message", 
"type": "syslog", 
"syslog_severity": "notice", 
tags": [ 
"_grokparsefailure" 
] 
} 

我的想法是建立此查詢到另一個腳本,該腳本將檢查新項目被添加到ES。

回答

0

使用Range Query

GET index/type/_count 
{ 
"query": { 
    "range": { 
     "@timestamp": { 
      "from": "now-30m", 
      "to" : "now" 
     } 
    } 
    } 
} 

這會給輸出,如:

{ 
"count": 2, 
"_shards": { 
    "total": 5, 
    "successful": 5, 
    "failed": 0 
} 
} 

其中count將攜帶的匹配的文檔數。

瞭解更多關於Range Queryhere

+0

感謝您的回覆,這個查詢時的所有文件在指數之,而是我們想查詢的一個文件指數之量,所以有兩種方法試圖爲我們工作: GET/_cat/count/?v 這個給了我們一個很好的計數,但我們希望能夠在另一個腳本中使用它,所以理想情況下我們只想檢索「count」中的對象「根據以下查詢字段: GET//_stats 理想情況下,我們只需輸出一個數字。 –

+0

已編輯我的答案。請看看它是否適用於你.. – Richa

+0

謝謝,會有一個過濾器,我們可以匹配,然後顯示只有結果,而不是數組的其餘部分? –