kibana - Kibana 仪表板:部分消息匹配的聚合
问题描述
我正在开发一项服务,该服务允许用户填写和提交多个表格。提交每个表单后,都会记录一条消息,例如:
Form submitted Form-001 with draftId (unique Id) and submissionRef (unique ref)
我想汇总(和计数)并可视化每个表单(基于表单名称Form-xxx
)提交的数量。
我对 kibana 仪表板相当陌生。因此,所有建议都值得赞赏。
解决方案
我终于想出了如何实现这一目标。我在这里发布它是为了关闭和将来参考:
这样做的方法是使用Kibana中的脚本字段。脚本化字段可以读取消息并根据需要聚合它们。Kibana 接受 2 种不同语言的脚本化字段:Lucene 表达式和Painless。
我的解决方案是用painless编写的:
def msg = doc['message.raw'].value;
if(msg != null){
int flagIndex = msg.indexOf('Form submitted');
if(flagIndex>0){
int toIndex = msg.indexOf(' with draftId');
return msg.substring(flagIndex+14,toIndex);
}
}
return "";
推荐阅读
- amazon-web-services - 如何通过 AWS CLI 在您的 S3 存储桶上禁用 MFA 删除?
- google-cloud-platform - google_project_services.default:更新服务时出错:googleapi
- react-native - React Native Linking Promise 解决了拒绝没有被调用
- jquery - 在 JQuery 中将 HTML 行转换为名称值对
- c++ - Xerces-C 增加内存使用量
- javascript - Angular:FileReader - 阅读器执行太多次
- python - ansible - 为特定模块/包运行测试(来自源代码)
- javascript - 处理页面后 DropDownList 失去价值
- java - 在更少的内存中计算唯一的字符串
- ansible - 如何使用存储的 Ansible Vault 密码