【发布时间】:2018-01-24 21:18:19
【问题描述】:
我有一个 AWS ElasticSearch(v 5.5)/Kibana(v 5.5.2) 实例从我的 java 服务中提取我的日志数据。在我的日志中,我有带有完全限定异常名称的堆栈跟踪(例如com.example.MyException)。
我的问题是,当我尝试通过 Kibana 搜索 MyException 时,我得到的结果为零,但如果我搜索 com.example.MyException,我会得到我期望的所有结果。
ElasticSearch word-delimiter 文档说:
按照以下规则将单词拆分为子词:
- 按字内分隔符拆分(默认情况下,所有非字母数字字符)
我预计这意味着我的完全限定类名将被点分隔,并且我将能够仅搜索类名。
我需要做些什么才能仅搜索类名以获得 ElasticSearch 的结果。
更新
我的日志通过Stream Cloudwatch Logs to EslaticSearch AWS 功能被提取到 ElasticSearch 中。此功能会生成一个 AWS lmbda 函数,该函数将日志记录发送到 ElasticSearch。我正在使用默认生成的函数 (see code)。我没有配置任何 ElasticSearch 映射,所以我假设我正在使用来自Dynamic Mapping的默认值
示例日志条目:
{
"date": 1516892650443,
"requestID": "ff5d5a37-01e0-11e8-bf20-610a6080caa5",
"logger name": "com.example.MyHandler",
"level": "ERROR",
"message": "Exception thrown: ",
"exception": " com.example.MyException \n \tat com.example.MyHandler.handle(MyHandler.java:100) \n \tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) \n \tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) \n \tat java.lang.Thread.run(Thread.java:748) \n Caused by: java.io.IOException: Stream closed\n \tat java.io.FileInputStream.read(FileInputStream.java:100)"
}
示例索引配置:
{
"cwl-2018.01.16": {
"aliases": {},
"mappings": {
"MyService-prod": {
"properties": {
"@id": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"@log_group": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"@log_stream": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"@message": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"@owner": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"@timestamp": {
"type": "date"
},
"date": {
"type": "long"
},
"exception": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"level": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"logger name": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"message": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"requestID": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
},
"settings": {
"index": {
"refresh_interval": "5s",
"number_of_shards": "5",
"blocks": {
"write": "false"
},
"provided_name": "cwl-2018.01.16",
"creation_date": "1516060800423",
"number_of_replicas": "0",
"uuid": "xxxx",
"version": {
"created": "5050299"
}
}
}
}
}
【问题讨论】:
-
但是您是否已将该过滤器添加到包含您的类名和包的字段的映射中?
-
不,我没有向 elasticsearch 添加任何过滤器或映射。
-
尝试搜索
myexception。小写。你实际上是如何搜索的?您是在搜索文本框中使用字段名还是只输入 MyException 就可以了? -
我只是在 kibana 搜索文本框中输入我的异常名称。我尝试使用小写字母(即
myexception)和字段名称(即exception:myexception)进行搜索,但结果仍然为零。
标签: java amazon-web-services elasticsearch kibana