首页 > 解决方案 > Vega 和 Kibana - 动态时间戳标签和过滤查询

问题描述

我正在使用 Kibana 处理我的第一个 Vega 可视化。

{
  $schema: https://vega.github.io/schema/vega-lite/v2.json
  title: Event counts from all indexes

  data: {
    url: {

      %context%: true
      %timefield%: last_submission

      index: test_info

      body: {
        aggs: {
          time_buckets: {
            date_histogram: {

              field: last_submission
              interval: {%autointerval%: true}
              extended_bounds: {
                min: {%timefilter%: "min"}
                max: {%timefilter%: "max"}
              }

              min_doc_count: 0
            }
          }
        }
        size: 0
      }
    }
    format: {property: "aggregations.time_buckets.buckets"}
  }

  mark: line

  encoding: {
    x: {
      field: key
      type: temporal
      axis: {title: false} 
    }
    y: {
      field: doc_count
      type: quantitative
      axis: {title: "Document count"}
    }
  }
}

可视化结果

我在这里有两个问题。

1 - 由于可视化链接到 Kibana 仪表板,用户可以从主仪表板中选择不同的时间窗口。如您所见,标签始终具有完整格式。我需要根据时间窗口动态设置标签。也就是说,如果用户选择日数据,则仅显示小时,如果用户选择周数据,则显示天,依此类推。我需要做什么?

2- 我需要根据字段的特定值过滤事件并使用主仪表板的时间窗口。那可能吗?我曾尝试在 Vega 代码中添加查询过滤器,但如果我还设置了上下文和时间字段,则会出现此错误:

设置 url.body.query 时不能使用 url.%context% 和 url.%timefield%

标签: elasticsearchkibanavega

解决方案


推荐阅读