2015-08-18 23 views
0

当前正试图创建一个带有实时用户信息(当前用户数量,他们在哪里工作等)的Kibana仪表板,而且我无法按时间约束可视化。Kibana 4和相对时间过滤器/ json输入

我试过在过滤器

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

,并在JSON输入字段

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

enter image description here

但是它不工作,我得到了下面的错误。

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

我已经尝试通过增加

script.disable_dynamic: false 

的YML文件,使Groovy脚本,但是它不似乎没有问题。任何提示或相对时间范围不可能了?

错误:

Error: Request to Elasticsearch failed: {"error":"SearchPhaseExecutionException[Failed to execute phase [query], all shards failed; shardFailures {[bzqrC3gbSPi7fp0OWh81VQ][logstash-2015.02.14][0]: SearchParseException[[logstash-2015.02.14][0]: query[ConstantScore(BooleanFilter(+cache(@timestamp:[1437289456709 TO 1439881456710])))],from[-1],size[0]: Parse Failure [Failed to parse source [{\"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\":{\"timestamp\":{\"gte\":\"now-6d\",\"lte\":\"now\"}}}}}}]]]; nested: SearchParseException[[logstash-2015.02.14][0]: query[ConstantScore(BooleanFilter(+cache(@timestamp:[1437289456709 TO 1439881456710])))],from[-1],size[0]: Parse Failure [Unexpected token START_OBJECT in 1 .]]; }{[bzqrC3gbSPi7fp0OWh81VQ][logstash-2015.02.15][0]: SearchParseException[[logstash-2015.02.15][0]: query[ConstantScore(BooleanFilter(+cache(@timestamp:[1437289456709 TO 1439881456710])))],from[-1],size[0]: Parse Failure [Failed to parse source [{\"size\":0,\"query\":{\"filtered\":{\"query\":{\"query_string\":{\"query\":\"\",\"analyze_wildcard\":true}},\"filter\":{\"bool\":{\"must\":..................................................... at http://kibana:5601/index.js?_b=7489:43092:38 at Function.Promise.try (http://kibana:5601/index.js?_b=7489:46434:26) at http://kibana:5601/index.js?_b=7489:46412:27 at Array.map (native) at Function.Promise.map (http://kibana:5601/index.js?_b=7489:46411:30) at callResponseHandlers (http://kibana:5601/index.js?_b=7489:43064:22) at 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) at http://kibana:5601/index.js?_b=7489:20979:26

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

回答

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

为什么不简单地使用内置的时间过滤器来代替,你可以实现你想要的。选择“相对”,然后选择“6天前”即可完成。

enter image description here

+0

我创建的可视化文件是一个度量标准,其中包含用户在最近10分钟内由日志定义的当前活动用户数(唯一计数)。包含的仪表板将包含像这样的实时统计信息(每次可视化的时间限制),而且还包含用户可以在时间过滤器中使用构建的统计信息(例如,一天,一周等会有一些计数器)。所以我不能完全依赖构建时间过滤器,但需要确定可视化范围。 – jaspernygaard

+0

虽然我明白,但很难说没有看到您的可视化/配置。我只能说,你的'范围'没有粘贴在正确的地方。如果有更多的东西可以分享(截图等),这是值得欢迎的。 – Val

+0

我添加了可视化屏幕截图 – jaspernygaard

1

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

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

获取数据在过去的6个月。