首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >匹配ELK中特定位置的子字符串电子邮件地址

匹配ELK中特定位置的子字符串电子邮件地址
EN

Stack Overflow用户
提问于 2020-07-07 13:26:24
回答 2查看 157关注 0票数 1

我试图从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日志中获取数据):

代码语言:javascript
复制
{
   "cwl-*":{
      "mappings":{
         "properties":{
            "@id":{
               "type":"string"
            },
            "@log_stream":{
               "type":"string"
            },
            "@log_group":{
               "type":"string"
            },
            "@message":{
               "type":"string"
            },
            "@owner":{
               "type":"string"
            },
            "@timestamp":{
               "type":"date"
            }
         }
      }
   }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-08 03:06:45

正如@Gibbs已经提到的原因all your data contains字符串abc@email.com,通过查看您现在的映射,它确认您使用的是没有显式分析器的string字段,将使用默认标准分析器

而不是这样,您应该将获取邮件id的字段映射到自定义分析器,该分析器使用不分割文本的URL电子邮件标记器

有关如何使用示例创建此分析器的示例

使用自定义电子邮件分析器的映射

代码语言:javascript
复制
{
    "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 分析

代码语言:javascript
复制
{
    "analyzer": "email_analyzer",
    "text": "abc@email.com"
}


{
    "tokens": [
        {
            "token": "abc@email.com",
            "start_offset": 0,
            "end_offset": 13,
            "type": "<EMAIL>",
            "position": 0
        }
    ]
}
票数 1
EN

Stack Overflow用户

发布于 2020-07-07 14:28:28

所有的结果都包含abc@gmail.com。所以这是意料之中的。

[abc@gmail.com]被标记为

代码语言:javascript
复制
{
    "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为该字段添加映射吗?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62776376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档