Elasticsearch - 在过去24小时内获取日志类型的计数

时间:2017-05-18 16:05:17

标签: api search elasticsearch

所以我的Elasticsearch索引中有3种类型的日志 -

CA,CT和Acc

我正在尝试查询Elasticsearch以获取呼叫前24小时的每个计数,但我没有太多运气合并它们。

调用

10.10.23.45:9200/filebeat-*/_count

使用

{
 "query":{
    "term": {"type":"ct"}
 }
}

获取计数,但尝试添加时间范围已被证明是徒劳的。当我尝试将一个范围添加到同一个查询时 - 它不起作用

我尝试使用:

{
    "query":{
        "term": {"type":"ct"},
        "range":{
            "date":{
                "gte": "now-1d/d",
                "lt" : "now"
            }
        }
    }
}

但是被退回了

{
"error": {
    "root_cause": [
        {
            "type": "parsing_exception",
            "reason": "[term] malformed query, expected [END_OBJECT] but found [FIELD_NAME]",
            "line": 5,
            "col": 3
        }
    ],
    "type": "parsing_exception",
    "reason": "[term] malformed query, expected [END_OBJECT] but found [FIELD_NAME]",
    "line": 5,
    "col": 3
},
"status": 400
}

2 个答案:

答案 0 :(得分:1)

您需要使用Bool Query将两种类型的查询合并为一种。试试这个。

POST _search
{
  "query": {
    "bool" : {
      "must" : {
        "term": {"type":"ct"}
      },
      "must" : {
        "range":{
            "date":{
                "gte": "now-1d/d",
                "lt" : "now"
            }
        }
      }
    }
  }
}

答案 1 :(得分:0)

以下对我有用(注意 - 这是发送给elasticsearch的帖子:9200 / index / _search)

{"query":{"bool":{"must":[{"query_string":{"analyze_wildcard":true,"query":"type:\"acc\""}},{"range":{"@timestamp":{"gte":"now-1h","lte":"now","format":"epoch_millis"}}}]}}}