1

在 Kibana 中,我创建了一个搜索,该搜索返回每个服务器的最后状态,使用字段折叠和内部点击。

{
  "query": {
    "match": {
      "event_name": "server_status"
    }
  },
  "collapse": {
    "field": "server_id",
    "inner_hits": {
      "name": "last_status",
      "size": 1,
      "sort": [
        {
          "@timestamp": "asc"
        }
      ]
    },
    "max_concurrent_group_searches": 4
  }
}

我有 13 台服务器。在Discover部分查看结果时,我可以看到 13 个条目,正如我所愿(我为一台服务器创建了一个新事件,应该避免返回 14 个条目)。

Kibana 在左上角给出的命中数是 14,但这是正常的,如文档中所述,这是总命中数而不是内部命中数。

问题是,在创建可视化(例如饼图)时,会考虑总条目(14),而不是我的内心命中,应该是 13。

因此,我将Slice Size指标更改为 server_id 上的Unique Count,我得到了 13 个。

但是,一旦在状态 Term 上配置了Split Slices参数,我就回到了 14 个条目(状态发生变化的服务器的旧条目仍然出现)。

我如何告诉 Kibana 我希望我的可视化只考虑我的内心打击?这意味着只为每个服务器获取最后一个状态事件,并为饼图中的每个状态分割切片。

4

1 回答 1

0

来自Elastic 论坛的回答

对不起,但你所要求的是不可能的。您需要在折叠的文档之上进行聚合,这是 Elasticsearch 和 Kibana 无法做到的。

我认为你现在最好的解决方法是在包含所有数据的实际索引之外,你当前存储的另一个索引,只有每个服务器的最新状态,所以基本上你的数据传输系统会更新新状态到达后具有最新状态的文档,而不仅仅是将它们添加到那里。这样,您可以使用该索引来可视化您的基础设施的当前状态,并使用另一个来可视化历史数据。

于 2018-03-20T16:10:26.640 回答