elasticsearch 如何使用Vega Lite仅打印最新时间的文档?,elasticsearch,kibana,vega-lite,graph-visualization,elasticsearch,Kibana,Vega Lite,Graph Visualization" /> elasticsearch 如何使用Vega Lite仅打印最新时间的文档?,elasticsearch,kibana,vega-lite,graph-visualization,elasticsearch,Kibana,Vega Lite,Graph Visualization" />

elasticsearch 如何使用Vega Lite仅打印最新时间的文档?

elasticsearch 如何使用Vega Lite仅打印最新时间的文档?,elasticsearch,kibana,vega-lite,graph-visualization,elasticsearch,Kibana,Vega Lite,Graph Visualization,我有一个带有时间字段“time”的索引,每个“time”值都有多个文档。 我只想介绍最近一次的结果。我怎么做? 是否有方法计算所有文档上时间字段的最大值,然后根据该值应用过滤器 下面是一个代码示例: { $schema: https://vega.github.io/schema/vega-lite/v2.json data: { data: table url: { %context%: true %timefield%: Time

我有一个带有时间字段“time”的索引,每个“time”值都有多个文档。 我只想介绍最近一次的结果。我怎么做? 是否有方法计算所有文档上时间字段的最大值,然后根据该值应用过滤器

下面是一个代码示例:

{
  $schema: https://vega.github.io/schema/vega-lite/v2.json

  data: {
    data: table
    url: {
      %context%: true
      %timefield%: Time
      index: data*
      body: {
        size: 10000
        _source: ["X", "Y"]
      }
    }
    format: {property: "hits.hits"}
  }
  mark: {type: "square", filled: true, size: 800 }
encoding: {
    x: {
      field: "_source.X"
      type: quantitative
      axis: {title: "X"}
    }
    y: {
      field: "_source.Y"
      type: quantitative
      axis: {title: "Y"}
    }  
}
}
我试过这个代码,但仍然不起作用。 我猜我的语法不正确

{
  "$schema": "https://vega.github.io/schema/vega-lite/v2.json",
  "data": {
    "data": "table",
    "url": {
      "%context%": true,
      "%timefield%": "Time",
      "index": "data*",
      "body": {
        "size": 10000,
        "aggs": {
          "time_field": {
            "terms": {"field": "Time", "size": 1, "order": {"_key": "desc"}},
            "aggs": {
              "x_Field": {"terms": {"field": "X", "size": 10000}},
              "y_Field": {"terms": {"field": "Y", "size": 10000}}
            }
          }
        }
      }
    },
    "format": {"property": "aggregations.category.buckets[0].x_Field.buckets"}
        "format": {"property": "aggregations.category.buckets[0].y_Field.buckets"}

  },
  "mark": {"type": "square", "filled": true, "size": 800},
  "encoding": {
    "x": {"field": "x_Field", "type": "quantitative", "axis": {"title": "X"}},
    "y": {"field": "y_Field", "type": "quantitative", "axis": {"title": "Y"}}
  }
}

您可以按大小1降序排列时间字段,这将为您提供属于最新时间的文档,然后您需要根据elasticsearch输出更改格式。 以下是弹性搜索的示例代码:

 "body": {
    "size": 10000,
    "aggs": {
        "time_field": {
            "terms": {
                "field": "Time",
                "size": 1,
                "order": {
                    "_key": "desc"
                }
            },
            "aggs": {
                "x_Field": {
                    "terms": {
                        "field": "x",
                        "size": 10000
                    }
                }
            }
        }
    }
}
编辑:使用以下格式后,您可以在键中获得展平的x字段数据

  "format": {
        "property": "aggregations.category.buckets[0].x_Field.buckets"
    }

非常感谢。但是,我如何处理“编码”部分中的X和Y字段呢?我在回答中添加了一个编辑,它将为您的X字段提供扁平桶数组,类似于为Y字段提供扁平桶数组的方式。我试图将其添加到我的代码中,但我猜我做错了(我编辑了我的问题并添加了它)。你能帮我找到问题吗?是的,它不正确。首先,仅尝试使用x轴。首先在vega lite编辑器中尝试您的示例。还可以通过谷歌查看弹性搜索示例。