繁体   English   中英

如何在Kibana中显示来自Elasticsearch的最新值的唯一计数

[英]How to display unique count with latest value from Elasticsearch in Kibana

我是ELK的新手。 我创建了名称为“ ordersatus”的索引,该索引存储了物流合作伙伴发布的状态。

每当物流合作伙伴更新订单状态时,就会将新状态推送到Elasticseach中。

现在,每个订单都有多个状态为“ ORDER CONFIRM”,“ APPOINTMENTMENT SCHEDULED”,“ OUT FOR DELIVERY”等的输入。

当我需要查看多少个订单处于哪种状态时,就会出现问题。 总订单计数为2,但在订单状态中我的总计数为4,因为它也计算较旧的值。 如您在所附屏幕截图中所见。

我想显示所有唯一订单状态以及具有该状态的订单数。

订单状态| 总数

APPOINTMENT_CONFIRMED | 1个
ASSIGN_FOR_DELIVERY | 1个

截至目前,其显示订单状态为“ CONFIRMED”,计数为2。这是这2个订单的较早值。

屏幕 截图1 屏幕 截图2

您是否要在第二个屏幕截图的表格中显示不同的状态及其数量? 存储桶中有两个选择-时间戳和状态:删除时间戳,因为它将拆分为每个唯一的时间戳。 您想要的只是状态。

这是一个不同的数据集,但您会明白:

在此处输入图片说明

解决方法是,您可以将以下内容添加到logstash配置中,以为每种状态添加权重。 当状态从先前状态转换时,将-1添加到先前状态权重并将1添加到新状态权重。

if [status] == "ORDER CONFIRM" {

  mutate { "add_field" => { "order_confirm_weight" => "1" } }
  mutate { convert => { "order_confirm_weight" => "integer" }}

} else if [status] == "APPOINTMENT SCHEDULED" {

  mutate { "add_field" => { "order_confirm_weight" => "-1" } }
  mutate { convert => { "order_confirm_weight" => "integer" }}

  mutate { "add_field" => { "appointment_scheduled_weight" => "1" } }
  mutate { convert => { "appointment_scheduled_weight" => "integer" }}  

} else if [status] == "OUT FOR DELIVERY" {

  mutate { "add_field" => { "appointment_scheduled_weight" => "-1" } }
  mutate { convert => { "appointment_scheduled_weight" => "integer" }}  

  mutate { "add_field" => { "out_for_delivery_weight" => "1" } }
  mutate { convert => { "out_for_delivery_weight" => "integer" }}  

}

将配置添加到日志后,您可以使用以下汇总功能在kibana可视化中获取每个状态的计数。

ORDER CONFIRM Count = Sum (order_confirm_weight)
APPOINTMENT SCHEDULED Count = Sum (appointment_scheduled_weight)
OUT FOR DELIVERY Count = Sum (out_for_delivery_weight)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM