更新时间:2026-06-30 GMT+08:00
分享

text_search表函数

本文介绍text_search函数的语法规则,包括参数解释、函数示例等。text_search函数是云日志服务(LTS)提供的表函数,用于关键词检索日志数据。

参数解释

该函数允许用户通过指定关键词查询条件,快速检索符合条件的日志记录,同时返回完整的表结构数据。

语法:text_search(index, query)

表1 参数说明

参数名称

描述

类型

是否必选

index

索引名称(表名),指定要查询的日志流名称,当前默认值'log'。

VARCHAR

query

关键词查询语句,跟日志搜索语法相同。

VARCHAR

  1. 索引名称:index参数必须是'log',暂不支持其他写法。
  2. 查询语句:query参数需遵循LTS日志搜索语法,语法错误会导致查询失败。

返回值:返回指定日志流对应的表结构,包含该表的所有列和日志搜索过滤后的数据行。

示例1:基础关键词检索

查询包含 "error" 关键词的日志记录:

SELECT *  FROM table(text_search(index =>'log', query => 'error')) LIMIT 100;

等同于如下方式:

error | SELECT * FROM log LIMIT 100;
  • index参数为'log',表示查询当前日志流
  • query参数为'error',检索所有包含'error'关键词的日志。
  • 返回该表的所有字段(如timestamp,level,message,host等)。
  • 使用LIMIT 100限制返回结果数量,避免数据量过大。

查询分析结果

timestamp          | level  | message                        | host
-------------------|--------|--------------------------------|------
2024-01-01 10:00:00| ERROR  | Connection timeout error       | host1
2024-01-01 11:30:00| ERROR  | Database connection failed     | host2

示例2:join场景中使用

先从全量日志检索出所有日志级别为ERROR的trace_id,再从全量日志中找出包含这些trace_id的日志,只展示trace_id和message,最多返回1000条。

SELECT trace_id, message from log where trace_id in 
(SELECT distinct trace_id
FROM table(text_search(index =>'log', query =>  'level:ERROR')))
limit 1000
  • query参数为 'level:ERROR'。
  • in相当于join操作,等价 SELECT t.trace_id,t.message FROM log t INNER JOIN (SELECT DISTINCT trace_id FROM table(text_search(index =>'log', query => 'level:ERROR'))) err ON t.trace_id=err.trace_id LIMIT 1000。

查询分析结果

trace_id  | message                        
----------|--------------------------------
xxxx_xxxx1|   access memory
xxxx_xxxx1| Memory allocation failed       

性能优化建议

  1. 限制结果数量:使用LIMIT子句避免返回过多数据。
    SELECT * FROM Table(text_search(index =>'log', query =>  'level:ERROR')) LIMIT 1000;
  2. 精确字段选择:只选择需要的字段,减少数据传输。
    SELECT message FROM Table(text_search(index =>'log', query =>  'ERROR'));
  3. 优化查询条件:使用Lucene语法进行预筛选,减少后端处理压力。
    -- 使用字段匹配而非全文检索
    text_search(index =>'log', query =>  'level:ERROR')  -- 高效
    text_search(index =>'log', query =>  'ERROR')        -- 较慢(全文扫描)

相关文档