Kibana 4和相对时间过滤器/ json输入

时间:2015-08-18 07:10:49

标签: elasticsearch kibana-4

目前正在尝试创建一个带有实时用户信息的Kibana仪表板(当前用户数量,他们正在工作的地方等),并且我无法在时间上限制可视化。

我尝试过滤器

@timestamp:[now-6M/M TO now]

并在json输入字段中

{
    "range" : {
         "@timestamp" : {
             "gte": "now-6d",
             "lte": "now" 
         }
     }
 }

enter image description here

然而它无效,我收到以下错误。

我以前有这个工作,虽然不同版本的Elasticseach1.6 +和Kibana4

我尝试通过添加

来启用groovy脚本
script.disable_dynamic: false

到yml文件,但它似乎不是问题。是否有任何提示或相对时间范围不再可能?

错误:

  

错误:对Elasticsearch的请求失败:   {“error”:“SearchPhaseExecutionException [无法执行阶段   [查询],所有分片都失败了; shardFailures   {[bzqrC3gbSPi7fp0OWh81VQ] [logstash-2015年2月14日] [0]:   SearchParseException [[logstash-2015年2月14日] [0]:   query [ConstantScore(BooleanFilter(+ cache(@timestamp:[1437289456709 TO   1439881456710])))],从[-1],size [0]:解析失败[无法解析   资源   [{\ “大小\”:0,\ “查询\”:{\ “过滤\”:{\ “查询\”:{\ “QUERY_STRING \”:{\ “查询\”:\“ \ ” \ “analyze_wildcard \”:真}},\ “过滤器\”:{\ “布尔\”:{\ “必须\”:[{\ “范围\”:{\ “@时间戳\”:{\ “GTE \”:1437289456709,\ “LTE \”:1439881456710}}}],\ “must_not \”:[]}}}},\ “AGGS \”:{\ “1 \”:{\“基数\ “:{\” 字段\ “:\” fields.UserName.raw \ “\ ”范围\“:{\ ”时间戳\“:{\ ”GTE \“:\ ”现在-6D \“,\” LTE \“:\“现在\”}}}}}}]]];   嵌套:SearchParseException [[logstash-2015.02.14] [0]:   query [ConstantScore(BooleanFilter(+ cache(@timestamp:[1437289456709 TO   1439881456710])))],从[-1],size [0]:解析失败[意外的令牌]   在1中START_OBJECT。]];   } {[bzqrC3gbSPi7fp0OWh81VQ] [logstash-2015年2月15日] [0]:   SearchParseException [[logstash-2015年2月15日] [0]:   query [ConstantScore(BooleanFilter(+ cache(@timestamp:[1437289456709 TO   1439881456710])))],从[-1],size [0]:解析失败[无法解析   资源   [{\ “大小\”:0,\ “查询\”:{\ “过滤\”:{\ “查询\”:{\ “QUERY_STRING \”:{\ “查询\”:\“ \”,\ “analyze_wildcard \”:真正}} \ “过滤器\”:{\ “布尔\”:{\ “\必须”:................. ....................................   在http://kibana:5601/index.js?_b=7489:43092:38       在Function.Promise.try(http://kibana:5601/index.js?_b=7489:46434:26)       在http://kibana:5601/index.js?_b=7489:46412:27       在Array.map(本机)       在Function.Promise.map(http://kibana:5601/index.js?_b=7489:46411:30)       at callResponseHandlers(http://kibana:5601/index.js?_b=7489:43064:22)       在http://kibana:5601/index.js?_b=7489:43182:16       at wrappedCallback(http://kibana:5601/index.js?_b=7489:20893:81)       at wrappedCallback(http://kibana:5601/index.js?_b=7489:20893:81)       在http://kibana:5601/index.js?_b=7489:20979:26

在Windows 2012r2上使用Kibana 4.1.1和Elasticsearch 1.7,jre 1.8.0.31

2 个答案:

答案 0 :(得分:2)

您可以使用时间范围过滤器,如:

timestamp:[now-6M/M TO now]

获取过去6个月的数据。

答案 1 :(得分:1)

每当您看到SearchParseException时,这意味着您的查询语法出现问题。所以它看起来像这样:

{
  "size": 0,
  "query": {
    "filtered": {
      "query": {
        "query_string": {
          "query": "",
          "analyze_wildcard": true
        }
      },
      "filter": {
        "bool": {
          "must": [
            {
              "range": {
                "@timestamp": {
                  "gte": 1437289456709,
                  "lte": 1439881456710
                }
              }
            }
          ],
          "must_not": []
        }
      }
    }
  },
  "aggs": {
    "1": {
      "cardinality": {
        "field": "fields.UserName.raw",
        "range": {                         <------ HERE is the problem
          "timestamp": {
            "gte": "now-6d",
            "lte": "now"
          }
        }
      }
    }
  }
}

问题在于您的cardinality汇总,您不能拥有range这样的汇总。几乎可以肯定您没有在正确的JSON字段中输入range

为什么您不是简单地使用内置时间过滤器,而是可以实现您想要的效果。选择&#34;相对&#34;然后&#34; 6天前&#34;现在,你已经完成了。

enter image description here