Kibana无法搜索数字的巧妙解决办法

经常用Kibana搜索日志,发现一个很神奇的问题,kibana对数字的支持不是很好(准确的说是Elastic Search),如果你需要根据一串数字去搜索日志,那可能会让你失望,无法匹配的正确的结果。哪怕是字母加数字的组合,也不行。

于是我想到写日志时,把数字转换为英文字符,这样建立一个映射关系,搜索的时候使用映射出来的字符串,这样不就可以解决问题了嘛?Kibana对字符串搜索的支持非常好。直接上代码:

<?php

class NumberMagic
{
    const PRE = 'CPRE'; // 前缀,可自定义

    // 转换成小写字符
    public static function toLowerStr($input)
    {  
        $string = self::toStr($input);
        return strtolower($string);
    }

    // 转换成大写字符 
    public static function toUpperStr($input)
    {
        $string = self::toStr($input);
        return strtoupper($string);
    }

    // 核心方法 
    protected static function toStr($input)
    {
        $map = [
            0 => 'A',
            1 => 'B',
            2 => 'C',
            3 => 'D',
            4 => 'E',
            5 => 'F',
            6 => 'G',
            7 => 'H',
            8 => 'I',
            9 => 'J',
        ];

        $string = self::PRE . $input; // 转换为字符串
        for ($i = 0; $i < strlen($string); $i++) {
            if (is_numeric($string[$i])) {
                $key = $string[$i];
                $string[$i] =  $map[$key];
            }
        }

        return $string;
    }
}


$input = "werrewrer234324234324234";
$result = NumberMagic::toLowerStr($input);
echo $result;

上面的代码实现很简单,首先我定义了一个数字到英文字母的映射表,然后遍历传入的字符串,如果发现有数字,就把数字替换为对应的字母。 这样就曲线救国的解决了日志搜索的问题~~

转载于:https://my.oschina.net/crazymus/blog/3045564

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值