elasticsearch 如何使用Mobile_Number和logstash添加基于移动的号码的国家/地区名称字段

agyaoht7  于 2022-11-22  发布在  ElasticSearch
关注(0)|答案(2)|浏览(133)

我在txt文件中的日志包含以下字段。我想从移动的号码中提取国家代码,并创建(翻译)到名为国家的新字段。
我检查了翻译过滤器,但没有得到如何提取国家代码数字从移动的号码字段使用它的翻译过滤器。
20是埃及的国家代码,971是巴林的国家代码。我想对所有国家代码都这样做。
请向我建议,如果它是可行的,至少一个国家代码,以便它可以为其他人翻译,因为所有的国家代码是唯一的。
对数

Mobile_Number: 201123123123User_id<....>
Mobile_Number: 971123123123User_id<....>

日志隐藏筛选器-

filter{
 grok {
        break_on_match => false
        match => {
            "message" => [
               "Mobile_Number: (?<Mobile_Number>[0-9]+)",
               "User_id(?<User_id>[0-9]+)"
                ]
           }}}

我发现这个主题讨论弹性使用Ruby代码在谷歌手机库,如果任何变通办法是可能的,除了这将是非常可观的。
Discuss Elastic-logstash-link-fileds-in-aggregate-filter
提前感谢您。

y4ekin9u

y4ekin9u1#

使用logstash创建新的字段,如“Country_Code”和“Country_Name”,并基于“移动的_Number”字段丰富它,可以使用Ruby使用前面回复链接中提到的phonelib库来完成。
但最简单的方法是使用python脚本,解析“移动的_Number”字段,并通过phone number library使用它创建新字段。
准确率达98%,通过使用Elasticsearch helpers的批量更新API可以提高富集速度
参考链接-es bulk helper examples
https://discuss.elastic.co/t/how-to-add-country-name-field-based-on-mobile-number-using-mobile-number-using-logstash/289588

wz1wpwve

wz1wpwve2#

您可以使用下面的拼音代码将电话号码转换为国家代码

gem 'phonelib'

require "phonelib"

def filter(event)
      s = Phonelib.parse(event.get("phonenumber"))
      event.set("CountryCode" , s.country)
end

调用logstash.conf文件中的代码,如下所示

ruby {
      path =>  "/opt/bitnami/logstash/config/sam.rb"
      }

您将获得国家/地区代码,例如US代表USA
确保您正在Gemfile中添加phonelib

相关问题