我试图从ELK Kibana发现部分的消息字段中查找数据匹配的电子邮件,我正在使用以下方法获得结果:
@message:"abc@email.com"
然而,所产生的结果包含了一些其他的信息,其中电子邮件不应该匹配,我无法为这个建立解决方案。
结果如下(出于安全原因对数据进行了消毒):
@message:INF PID-1 : abcdefg数据LIST_LOOKUP: abc@email.com \\ User列表来自Profiles \ name \ user_name @id:355502086986714 @message:INF PID-2 : abcdefg数据LIST_LOOKUP: abc@email.com \\ User列表来自Profiles \ name \ user_name @id:355501869671304 @message:INF PID-3 : c5在11 id @id:355501617979964834中完成了200 OK @message:INF PID-5 : 542完成了9ms @id:35550081535中的200 OK
虽然我希望它是:
@message:INF PID-3 : c5在11 id @id:355501617979964834中完成了200 OK @message:INF PID-5 : 542完成了9ms @id:35550081535中的200 OK
我尝试过使用@message: "[PID-*] [abc@email.com]"、@message: "\[PID-*\] \[abc@email.com\] \:"、@message: "[abc@email.com]"、@message: *abc@email.com*和一些类似的搜索,但都没有成功。
请让我知道我在这里遗漏了什么,以及如何使用KQL/Lucene在ELK进行高效的潜文本搜索。
下面是我的索引的映射(我从cloudwatch日志中获取数据):
{
"cwl-*":{
"mappings":{
"properties":{
"@id":{
"type":"string"
},
"@log_stream":{
"type":"string"
},
"@log_group":{
"type":"string"
},
"@message":{
"type":"string"
},
"@owner":{
"type":"string"
},
"@timestamp":{
"type":"date"
}
}
}
}
}发布于 2020-07-08 03:06:45
正如@Gibbs已经提到的原因all your data contains字符串abc@email.com,通过查看您现在的映射,它确认您使用的是没有显式分析器的string字段,将使用默认标准分析器。
而不是这样,您应该将获取邮件id的字段映射到自定义分析器,该分析器使用不分割文本的URL电子邮件标记器。
有关如何使用示例创建此分析器的示例
使用自定义电子邮件分析器的映射
{
"settings": {
"analysis": {
"analyzer": {
"email_analyzer": {
"tokenizer": "my_tokenizer"
}
},
"tokenizer": {
"my_tokenizer": {
"type": "uax_url_email"
}
}
}
},
"mappings": {
"properties": {
"email": {
"type": "text",
"analyzer": "email_analyzer"
}
}
}
}分析api响应
POST 分析
{
"analyzer": "email_analyzer",
"text": "abc@email.com"
}
{
"tokens": [
{
"token": "abc@email.com",
"start_offset": 0,
"end_offset": 13,
"type": "<EMAIL>",
"position": 0
}
]
}发布于 2020-07-07 14:28:28
所有的结果都包含abc@gmail.com。所以这是意料之中的。
[abc@gmail.com]被标记为
{
"tokens": [
{
"token": "abc",
"start_offset": 1,
"end_offset": 4,
"type": "<ALPHANUM>",
"position": 0
},
{
"token": "gmail.com",
"start_offset": 5,
"end_offset": 14,
"type": "<ALPHANUM>",
"position": 1
}
]
}如果你有一个电子邮件字段,你可以利用它。或者您需要更改该字段的映射。
如果它没有回答您的问题,可以使用http://host:port/indexName/_mapping为该字段添加映射吗?
https://stackoverflow.com/questions/62776376
复制相似问题