当前位置: 首页 > news >正文

OpenObserve非sql模式 query editor 中 xx like ‘|’报错如何处理

您提到的行为是 OpenObserve ​非 SQL 模式下 Query Editor 中的核心特性。让我们明确问题原因和解决方案:


⚠️ 报错原因:| 是条件分隔符

在 ​非 SQL 模式的 Query Editor 中:

  1. ​**| 是逻辑操作符**​:表示 OR 条件(不是普通字符)。
  2. 输入结构被破坏​:当您输入 xx like '|' 时:
    • xx like 会被识别为一个查询条件
    • 后面的 '|' 会被解析器拆解:
      • 单引号 ' 是字符串边界符
      • 竖线 | 被识别为新条件的开始​ → 解析器期待紧随其后的是另一个字段名(如 _timestamplevel),而非单引号或空内容。
    • 结果​:查询语法结构断裂,导致类似 Unexpected token '|' 的错误。

✅ 解决方案:使用 ​字段值模式​ 或 ​转义

方案 1️⃣:​字段值模式(推荐)​

适用场景:精确查找仅含 | 的字段值

  1. 在 Query Editor 中:
    • 选择字段(如 msg
    • 运算符选 = (精确匹配)或 contains(模糊匹配)
    • ​**值输入框输入竖线 |**​(加引号)
    msg = |  // 精确匹配字段值为竖线"|"的日志
    msg contains | // 匹配包含竖线的日志(如 "Error | timeout")
方案 2️⃣:​强制转义为普通字符

适用场景:作为复杂字符串的一部分
在查询条件的值输入框内,​使用反斜杠 \ 转义竖线:

msg contains \|   // 匹配包含"|"的日志(被识别为普通字符)
msg = \|          // 精确匹配值为竖线"|"的日志
方案 3️⃣:​切换到 SQL 模式

若非 SQL 模式无法满足,直接切换为 SQL 语法模式:

SELECT * FROM 'stream_name' 
WHERE msg LIKE '%|%'    -- 需转义则写 '%= \| =%'

📝 非 SQL 模式下的正确写法示例

场景错误写法正确写法解析结果
查找 msg 仅为竖线 ```msg like ''`
查找含 `msg``msg like '%%'`
查找以 `A开头的msg``msg like 'A%'`

🔍 技术原理

OpenObserve 非 SQL 模式的 Query Editor ​动态解析用户输入​:

  • ​**竖线 |**​ 始终被识别为逻辑 OR 的分隔符
  • 值输入框的内容​(除非转义)会直接按字符串处理,​但引号内结构有破坏风险
  • ​**转义符号 \**​ 显式声明:下一个字符是普通文本,非运算符。

💎 总结

在 ​非 SQL 模式中:

  1. 不能直接在 like 值里写 | → 会被识别为逻辑 OR 导致结构错误。
  2. 两种安全写法​:
    • 模糊匹配​ → 用 字段 contains \|
    • 精确匹配​ → 用 字段 = \|
  3. 值输入框内无需加引号('"),系统会自动处理字符串边界。

http://www.dtcms.com/a/317302.html

相关文章:

  • RNN梯度爆炸/消失的杀手锏——LSTM与GRU
  • Disruptor 的原理、应用场景
  • jspdf或react-to-pdf等pdf报错解决办法
  • iOS混淆工具有哪些?在集成第三方 SDK 时的混淆策略与工具建议
  • Java Socket -- UDP通信
  • CSS 回流(Reflow)和重绘(Repaint)
  • C语言基础_排序算法和二分法查找
  • TDengine IDMP 背后的技术三问:目录、标准与情景
  • 自学嵌入式 day43 中断系统
  • 1-知识图谱—知识图谱表示与建模:给知识 “搭框架”,让每句话都有条理
  • Java学习第一百一十一部分——Jenkins(二)
  • 开源流媒体服务器ZLMediaKit 的Java Api实现的Java版ZLMediaKit流媒体服务器-二开视频对话
  • 周鸿祎:AI 时代安全智能体,能否重塑数字安全格局?
  • 【数据库】Oracle学习笔记整理之一:ORACLE的核心组成部分
  • 亚矩阵云手机:解锁 Shopee/Lazada 东南亚电商运营“通关密码
  • Cortex-M MCU 默认的分散加载文件分析
  • CSS高频属性速查指南
  • SG105 Pro 网管交换机的3种VLAN配置
  • Uniapp生物识别(SOTER)
  • 什么是逻辑外键?我们要怎么实现逻辑外键?
  • 【C++详解】STL-set和map的介绍和使用样例、pair类型介绍、序列式容器和关联式容器
  • sqli-labs靶场less40-less45
  • uniapp 通用地磅称重系统手机端
  • 生成网站sitemap.xml地图教程
  • android 设置字体样式
  • QT----QAxObject在子线程中调用,发现excel指针为空
  • NCD57080CDR2G 安森美onsemi 通用驱动器, SOIC, 8针, 20V电源, 8 A输出NCD57080CDR2电流隔离式栅极驱动器
  • Excel制作尖刀图,直观展示业绩涨跌
  • 【Excel】通过Index函数向下拖动单元格并【重复引用/循环引用】数据源
  • Unity模型显示在UI上