Kibana:如何创建一个表格,显示字段

时间:2017-11-05 20:26:10

标签: elasticsearch logstash kibana elastic-stack kibana-5

我的文件包含字段account_id(我的关系数据库的主键)和状态。每当帐户状态发生变化时,我都会将事件推送到ElasticSearch。

因此,在一段时间内,对于具有不同状态的帐户,将有多个文档。

我的要求是获取每个account_id的最新文档,并根据状态进行计数。

SQL等效“按状态从帐户组中选择状态,计数(*);”

示例:请考虑以下日志

account_id: 1, status:delete, @timestamp: November 4th 2017, 18:42:09.445
account_id: 1, status:save, @timestamp: November 3rd 2017, 18:42:09.445
account_id: 1, status:draft, @timestamp: November 2nd 2017, 19:42:09.445

account_id: 2, status:draft, @timestamp: November 3rd 2017, 19:42:09.445

account_id: 3, status:save, @timestamp: November 4th 2017, 18:42:09.445
account_id: 3, status:draft, @timestamp: November 3rd 2017, 19:42:09.445

输出应为:

**status** **count**
 delete   1
 save     1
 draft    1

ELK:5.6

2 个答案:

答案 0 :(得分:0)

至少自2013年以来,Kibana一直要求使用此功能。我们停止等待,并使用graphana,它可以做到这一点。如果你可以遵循所有github引用,看起来弹性可能有do it now的方法。

答案 1 :(得分:0)

现在作为一种解决方法,我更新了我的logstash.conf,以便将相同的日志消息推送到两个索引。在第一个索引中,我总是创建一个新记录,在第二个索引中,我创建/更新记录。

logstash.conf的片段

output {
  if [index_name] == "Account" {
  elasticsearch {
  hosts => ["IP:PORT"]
  index => "account"
  }
}
stdout { codec => rubydebug }
}
output {
 if [index_name] == "Account" {
 elasticsearch {
 hosts => ["IP:PORT"]
 index => "account_latest"
 document_id => "%{field_id}"
 }
}
stdout { codec => rubydebug }
}