[英]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个订单的较早值。
解决方法是,您可以将以下内容添加到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.