elasticsearch - 如何在 Kibana 中显示来自 Elasticsearch 的最新值的唯一计数
问题描述
我是 ELK 的新手。我创建了名为“ordersatus”的索引,其中存储了物流合作伙伴发布的状态。
每当物流合作伙伴更新订单状态时,就会将新状态推送到 elasticseach。
现在每个订单都有多个订单状态,如“订单确认”、“预约计划”、“发货”等。
当我需要查看有多少订单处于哪种状态时,就会出现问题。总订单数为 2,但在订单状态下,我得到总订单数 4。因为它也计算旧值。正如您在随附的屏幕截图中看到的那样。
我想显示所有独特的订单状态以及具有该状态的订单计数。IE
订单状态 | 总数
预约_确认 | 1
ASSIGN_FOR_DELIVERY | 1
截至目前,其显示订单状态为“CONFIRMED”,计数为 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" }}
}
将配置添加到 logstash 后,您可以使用以下聚合函数获取 kibana 可视化中每个状态的计数。
ORDER CONFIRM Count = Sum (order_confirm_weight)
APPOINTMENT SCHEDULED Count = Sum (appointment_scheduled_weight)
OUT FOR DELIVERY Count = Sum (out_for_delivery_weight)
推荐阅读
- java - 如何在 Java 中制作 ContextList 序列长度:3 到序列长度:0
- javascript - 使用 jquery 的联系表单验证错误
- c# - 在类中使用结构时值不会改变
- maven - 我们如何在 sonarqube 6.5+ 中获得单独的报告
- python - 如何根据条件和 groupby 将 pandas 数据集合并到自身上
- spring-cloud - Spring Cloud Netflix:ribbon.NIWSServerListClassName 和ribbon.listOfServers 有什么区别?
- javascript - 在字符串的开头和结尾添加空格
- corda - 如何使用 VaultCustomQuery 查询父状态的嵌套集合中的字段
- c# - 流利的断言应该大于总是通过
- google-apps-script - 将数组传递给包装在 ArrayFormula 中的自定义函数?