我正在尝试从ELK Kibana
discover部分的消息字段中查找与电子邮件匹配的数据,我使用以下方法获得结果:@message:"abc@email.com"
个
但是,生成的结果包含一些其他邮件,其中电子邮件不应匹配,我无法建立解决方案。
结果为(* 出于安全原因,数据已被清理 ):
[2020-07-07 12:54:51.105] [第一批病人名单]:[abcdefg] [JID-5c] [数据]列表_查找:abc@email.com|配置文件中的用户列表|姓名|用户名:
[2020-07-07 12:38:36.755] [第二届会议议程]:[abcdefg] [JID-ed 2] [数据]列表查找:abc@email.com|配置文件中的用户列表|姓名|用户名:
[2020-07-07 12:19:48.141] [PID-3] [abc@email.com]:[c5] [数据]在11毫秒内完成200次OK @id:355501617979964834
[2020-07-07 11:19:48.930] [PID-5] [abc@email.com]:[542] [数据]在9毫秒内完成200次OK @id:35550081535
而我希望它是:
[2020-07-07 12:19:48.141] [PID-3] [abc@email.com]:[c5] [数据]在11毫秒内完成200次OK @id:355501617979964834
[2020-07-07 11:19:48.930] [PID-5] [abc@email.com]:[542] [数据]在9毫秒内完成200次OK @id:35550081535
我试过使用@message: "[PID-*] [abc@email.com]"
、@message: "\[PID-*\] \[abc@email.com\] \:"
、@message: "[abc@email.com]"
、@message: *abc@email.com*
和一些更类似的搜索,但都没有成功。
请让我知道我在这里错过了什么,以及如何在ELK kibana中使用discover和KQL
/Lucene
进行有效的潜文本搜索。
下面是我的索引的Map( 我正在从cloudwatch日志中获取数据 *):
{
"cwl-*":{
"mappings":{
"properties":{
"@id":{
"type":"string"
},
"@log_stream":{
"type":"string"
},
"@log_group":{
"type":"string"
},
"@message":{
"type":"string"
},
"@owner":{
"type":"string"
},
"@timestamp":{
"type":"date"
}
}
}
}
}
2条答案
按热度按时间qvk1mo1f1#
正如@Gibbs已经提到的原因
all your data contains
字符串abc@email.com
,通过查看您的Map,现在确认您正在使用string
字段,而没有显式分析器将使用default standard analyzer相反,您应该将获取邮件ID的字段Map到使用不拆分文本的UAX URL Email tokenizer的自定义分析器。
关于如何使用示例创建此分析器的示例
使用自定义电子邮件分析器进行Map
分析API响应
POST http://{{主机名}}:{{端口}}/{{索引名称}}/_分析
q9yhzks02#
您的所有结果都包含
abc@gmail.com
。因此这是预期的。[abc@gmail.com]
标记为如果你有一个电子邮件字段,你可以使用它。或者你需要改变你的Map为该字段。
如果没有回答您的问题,是否可以使用
http://host:port/indexName/_mapping
为该字段添加Map