在 kibana 中可视化自定义查询

Ric*_*out 4 visualization elasticsearch kibana

我有这个 Elasticsearch 的自定义查询:

{
  "query": { "match_all": {} },
    "size": 0,
    "aggs": {
        "hour": {
            "histogram": {
                "script": "doc['startTime'].date.hourOfDay",
                "interval": 1,
                "min_doc_count": 0,
                "extended_bounds": {
                    "min": 0,
                    "max": 23
                },
                "lang":"groovy"
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

其中,当通过邮递员运行时,给出以下结果(不完整):

 "aggregations": {
    "hour": {
      "buckets": [
        {
          "key": 0,
          "doc_count": 18359
        },
        {
          "key": 1,
          "doc_count": 18361
        },
        {
          "key": 2,
          "doc_count": 18183
        },
        {
          "key": 3,
          "doc_count": 19729
        },
Run Code Online (Sandbox Code Playgroud)

事情是,现在我想在 Kibana 中可视化这些存储桶。目标是显示 24 个条形,每个条形都有各自的 doc_count。

但是,如果我将查询放入搜索栏中,则会收到错误消息:

Visualize: [filtered] query does not support [query].

进入可视化选项卡并添加聚合类型“日期直方图”、字段“开始时间”(这是我的日期字段)、间隔自动和以下 json 的 x 轴:

{
    "histogram": {
        "script": "doc['startTime'].date.hourOfDay",
        "interval": 1,
        "min_doc_count": 0,
        "extended_bounds": {
            "min": 0,
            "max": 23
        },
        "lang":"groovy"
    }
}
Run Code Online (Sandbox Code Playgroud)

也会产生错误: Visualize: Unknown key for a START_OBJECT in [2]: [histogram].

在过去的 3 个小时里一直在阅读不同的解决方案,并没有偶然发现任何可行的解决方案。

更多信息:

"version": {
  "number": "2.3.3",
  "build_hash": "218bdf10790eef486ff2c41a3df5cfa32dadcfde",
  "build_timestamp": "2016-05-17T15:40:04Z",
  "build_snapshot": false,
  "lucene_version": "5.5.0"
}
Run Code Online (Sandbox Code Playgroud)
  • Kibana 版本:4.5.0
  • Kibana 版本:9889

任何人都可以帮我一把:)?

Or *_*ger 5

您可以使用 Kibana 中的“JSON 输入”选项来执行此操作:

  1. 创建新的垂直条形图
  2. 在 XAxis 下,选择“直方图”可视化并从列表中选择任何字段
  3. 选择任意间隔
  4. 单击“高级”插入符号并在文本框中输入以下内容

{
  "script": "doc['startTime'].date.hourOfDay",
  "interval": 1,
  "min_doc_count": 0,
  "extended_bounds": {
    "min": 0,
    "max": 23
  },
  "lang": "groovy"
}
Run Code Online (Sandbox Code Playgroud)

另一种选择是创建一个新的脚本字段并使用它:

  1. 转到设置 - >单击左侧的索引模式
  2. 选择“脚本字段”选项卡(在“字段”选项卡旁边)
  3. 单击“添加脚本字段”
  4. 将该字段命名为 startTime_hourofday
  5. 在脚本输入下,设置: doc['startTime'].getHourOfDay()
  6. 现在您可以创建一个新的可视化,就像您尝试在没有任何特殊或自定义 JSON 输入的情况下一样,只需startTime_hourofday从字段列表中选择。