InfluxDB如何进行模糊查询?
摘要:InfluxDB 模糊查询完整总结与示例 📊 查询方式全面总结(InfluxQL) 1. 精确匹配(最佳性能) -- 单值精确匹配 WHERE routername = 'NJ-MAI
InfluxDB 模糊查询完整总结与示例
📊 查询方式全面总结(InfluxQL)
1. 精确匹配(最佳性能)
-- 单值精确匹配
WHERE routername = 'NJ-MAIPU-1'
-- 多值精确匹配(使用OR)
WHERE routername = 'NJ-MAIPU-1' OR routername = 'NJ-SCT-R02'
2. 基础模糊匹配(简洁写法)
-- 包含匹配
WHERE routername =~ /MAIPU/
WHERE host =~ /web/
-- 等同于明确写法
WHERE routername =~ /.*MAIPU.*/
3. 标准模式匹配(明确范围)
-- 开头匹配
WHERE routername =~ /^NJ-.*/
-- 结尾匹配
WHERE routername =~ /.*-R01$/
-- 包含匹配(明确写法)
WHERE routername =~ /.*MAIPU.*/
4. 多值组合匹配(高效多选)
-- 多值或匹配
WHERE routername =~ /(MAIPU|SCT|CORE)/
-- 精确多值匹配
WHERE routername =~ /^(NJ-MAIPU-1|NJ-SCT-R02)$/
5. 字符范围匹配
-- 数字匹配
WHERE routername =~ /[0-9]/
-- 字母匹配
WHERE routername =~ /[A-Z]/
-- 组合匹配
WHERE routername =~ /[A-Z][0-9]/ -- 如A1, B2等
⚠️ 重要注意事项
InfluxQL 不支持的特性:
-- 以下语法会报错!
WHERE routername IN ('NJ-MAIPU-1', 'NJ-SCT-R02')
WHERE routername IN ('value1', 'value2')
多OR正则(避免使用):
-- 性能差,避免使用
WHERE routername =~ /MAIPU/ OR routername =~ /SCT/ OR routername =~ /CORE/
🔍 各种方式的特性对比
查询方式
语法示例
性能
可读性
适用场景
精确匹配
routername = '值'
⭐⭐⭐⭐⭐
⭐⭐⭐⭐⭐
已知具体值
多值OR精确
name = 'A' OR name = 'B'
⭐⭐⭐⭐
⭐⭐⭐⭐
已知多个具体值
基础模糊
name =~ /pattern/
⭐⭐⭐
⭐⭐⭐⭐⭐
快速简单匹配
多值组合
name =~ /(pat1|pat2)/
⭐⭐⭐
⭐⭐⭐⭐
同类型多值匹配
标准模式
name =~ /.*pattern.*/
⭐⭐⭐
⭐⭐⭐⭐
明确范围匹配
多OR正则
=~ /a/ or =~ /b/
⭐
⭐⭐
避免使用
🎯 应用场景详细示例
场景1:精确设备查询
-- 查询特定设备
SELECT * FROM xr_intf_stats
WHERE routername = 'NJ-MAIPU-1'
ORDER BY time DESC
LIMIT 10
-- 查询多个特定设备
SELECT * FROM xr_intf_stats
WHERE routername = 'NJ-MAIPU-1' OR routername = 'NJ-SCT-R02'
ORDER BY time DESC
LIMIT 10
场景2:设备类型筛选
-- 查询所有MAIPU设备
SELECT * FROM xr_intf_stats
WHERE routername =~ /MAIPU/
ORDER BY time DESC
-- 查询多种类型设备
SELECT * FROM xr_intf_stats
WHERE routername =~ /(MAIPU|SCT|CORE)/
ORDER BY time DESC
场景3:设备编号模式匹配
-- 查询所有R系列设备
SELECT * FROM xr_intf_stats
WHERE routername =~ /.*-R[0-9]+$/
ORDER BY time DESC
-- 查询NJ开头的所有设备
SELECT * FROM xr_intf_stats
WHERE routername =~ /^NJ-.*/
ORDER BY time DESC
场景4:端口和接口查询
-- 查询Tengigabit接口
SELECT * FROM xr_intf_stats
WHERE name =~ /tengigabit/
ORDER BY time DESC
