首页 文章

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

提问于
浏览
0

目前正在尝试创建一个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.02.14] [0]:SearchParseException [[logstash-2015.02] .14] [0]:查询[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]:查询[ConstantScore(BooleanFilter(cache(@timestamp:[1437289456709 TO 1439881456710])))],来自[ - 1],大小[0]:解析失败[1]中的意外标记START_OBJECT];} {{bzqrC3gbSPi7f p0OWh81VQ] [logstash-2015.02.15] [0]:SearchParseException [[logstash-2015.02.15] [0]:查询[ConstantScore(BooleanFilter(cache(@timestamp:[1437289456709 TO 1439881456710])))],来自[ - 1],size [0]:解析失败[无法解析源[{\“”size \“:0,\”query \“:{\”filtered \“:{\”query \“:{\”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在函数.Promise.map(http:// kibana:5601 / index.js?_b = 7489:46411:30)的Array.map(native)处于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)在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 回答

  • 2

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

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

    获取过去6个月的数据 .

  • 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 . 它's almost certain that you'没有在正确的JSON字段中输入您的 range .

    你为什么不简单地使用内置的时间过滤器,你可以完全达到你想要的效果 . 现在选择“亲戚”然后“6天前”,你就完成了 .

    enter image description here

相关问题