elasticsearch - 如何在没有正则表达式的情况下使用脚本字段从日志字段中搜索子字符串
问题描述
我正在尝试通过在日志字段(一个长文本字段)中捕获一些“关键字”来使用无痛创建一些脚本字段。例如,我有一堆日志字段:
"Error: Duplicate entry in user1"
"Error: Duplicate entry in user2"
"Error: Duplicate entry in user1"
"Error: Duplicate entry in user3"
"Error: Duplicate entry in user2"
"Error: Duplicate entry in user1"
"Error: Duplicate entry in user3"
我正在使用的无痛:
if (doc['log.keyword'].value == 'Duplicate entry') {
return "match";
}
return "No match";
无论用户ID如何,只捕获“重复条目”错误消息,我确信我需要使用正则表达式来做到这一点。我只是想知道是否有另一种方法可以在不使用正则表达式的情况下做到这一点。有什么建议么。
解决方案
有很多方法。你可以试试这个:
GET logs/_search
{
"query": {
"script": {
"script":
"""
if (doc["log.keyword"].value == null) return false;
return doc["log.keyword"].value.contains("Duplicate entry");
"""
}
}
}
在 kibana 5 三重引号可能不起作用。我不记得确切。只需用单引号替换
推荐阅读
- java - Firestore - 从文档快照 Java/Android 返回一个值
- arrays - 我在将值分配给我在 vb 中创建的数组时遇到问题。看起来很简单,但我不知道我做错了什么
- javascript - 尝试通过电子邮件发送单个 Google 表格的 PDF
- asp.net - 如何使用 http-redirect 实现单点注销
- javascript - 读取在 JS 中创建的 Laravel Blade 中的 cookie
- java - 错误 405 - 在 Java HTTP 函数调用中找不到方法
- java - 无法找到或加载主类 com.simplilearn.testing.oops.LunchNewBrowser 原因:使用 Selenium Java 的 java.lang.ClassNotFoundException 错误
- reactjs - 在 ScrollView 中放置一个包含 FlatList 的组件以进行下拉刷新?
- powerbi - 如何将 YYYYMM 转换为日期时间或数字?
- matlab - 从 ployshape 类中提取值