2017-01-16 111 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

谢谢,会有一个过滤器,我们可以匹配,然后显示只有结果,而不是数组的其余部分? –