promql 参数怎么忽视大小写查询

promql 参数怎么忽视大小写查询,例如输入123AB,同时匹配123AB,123aB,123Ab,123ab,这种promql怎么写

PromQL不支持忽略大小写查询,但可以使用正则表达式来实现:
/<要查询的内容>/i
例如:
/MyLabelName/i

Prometheus 的 PromQL 中并没有直接支持忽略大小写的查询方式。但是,您可以使用表达式和函数来实现类似的功能。

使用 ignore_case() 函数:
在 PromQL 中使用 ignore_case() 函数,它将字符串转换为小写。然后比较字符串时就不用考虑大小写问题了。

ignore_case(labelName) = "123A"

使用正则表达式:
使用正则表达式来匹配字符串,忽略大小写的话可以使用 (?i)

labelName =~ "(?i)123A"

使用 tolower() 函数
使用 tolower() 函数将字符串转化为小写字符串

tolower(labelName) = "123a

要不分大小写地匹配字符串“123AB”,可以使用以下查询:

ignore_case(metric_name) == "123AB"

还可以将=~运算符与正则表达式一起使用:

metric_name =~ "^123ab$"i

推荐三种写法

1、通过正则表达式

SELECT mail FROM mail_list where mail~* 'sample@test.com';

2、通过ilike模糊查询

SELECT mail FROM mail_list where mail ilike 'sample@test.com';

3、通过转换大小写匹配

SELECT mail FROM mail_list where lower(mail) = 'sample@test.com'; 作者:原来是冠男啊 https://www.bilibili.com/read/cv12874053/ 出处:bilibili

PromQL,Prometheus中使用的查询语言,没有内置的忽略大小写匹配支持。但是,您可以使用正则表达式中的“ignore”函数来实现此行为。

例如,如果要匹配标签“job”的值“123AB”,可以使用以下查询:

ignore(job) =~ "123AB"

这将匹配“job”标签的任何值,该值包含字符串“123AB”,而不管大小写。

你也可以使用 =~ 运算符,这个运算符使用正则表达式来匹配值,并且是不区分大小写的,查询语句如下:

job =~ ".*(?i)123AB.*"

请注意,=~运算符的性能比=运算符差,因此应谨慎使用。

另外需要注意的是,这只会匹配确切的字符串“123AB”,你可以使用正则表达式来匹配字符串的任何可能情况。

如果直接要回答这个问题,其实PromQL无法直接忽略大小写查询。因此可以采用下面几种思路来解决这个问题:
1.采用正则表达式来进行匹配,这一点前面有几个回答也提到了:

label_name(metric, label) ~~ /(?i)123AB/

2.在采集数据过程中进行转换。如果你只是想在数据采集时统一大小写,你可以在采集数据时对标签值进行转换,例如使用脚本将所有标签值转换为小写。这样就能避免在 PromQL进行处理。

PromQL不支持忽略大小写查询,你需要将所有的查询内容转换成相同的大小写。可以使用下面的方法将所有的查询内容转换成相同的大小写:

1.使用lower()函数:lower(metric_name) = '123ab'

2.使用regexp_replace()函数:regexp_replace(metric_name, '(.*)', '\L\1') = '123ab'

这两种方法都可以将所有的查询内容转换成相同的大小写。