相关文章推荐
很拉风的罐头  ·  迷你联萌(动画) - 萌娘百科 ...·  4 月前    · 
玩篮球的小虾米  ·  许浩明-国际法学院·  5 月前    · 
勤奋的香槟  ·  这些年,习近平收到过哪些球衣?--时政--人民网·  1 年前    · 
腹黑的刺猬  ·  孙一峰 - 萌娘百科 万物皆可萌的百科全书·  1 年前    · 
行走的剪刀  ·  天际ME5出世,能否承担起天际汽车走量的重任 ...·  2 年前    · 
Code  ›  配置索引实现日志的查询和分析_日志服务(SLS)-阿里云帮助中心
https://help.aliyun.com/zh/sls/user-guide/create-indexes
神勇威武的四季豆
7 月前
大模型 产品 解决方案 文档与社区 权益中心 定价 云市场 合作伙伴 支持与服务 了解阿里云
AI 助理
备案 控制台
官方文档
有奖调研
输入文档关键字查找

创建索引

更新时间:
产品详情
我的收藏
重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

如需对采集到 Logstore 中的日志进行查询和分析,则必须创建索引。本文为您介绍 日志服务 索引概念、索引类型、创建索引、关闭索引、配置示例和计费说明等。

为什么需要创建索引

通常我们使用关键词从原始日志中检索想要的内容,例如包含 curl 的日志: curl/7.74.0 。如果不进行切分,该日志文本会作为一个整体,不能和关键词 curl 完全对应,因此不会被 日志服务 检索到。

为了便于检索,需要将日志切分成独立、可搜索的词。日志切分由分词符实现,这些符号决定了日志文本内容被切分的位置。以该日志为例,使用分词符 \n\t\r,;[]{}()&^*#@~=<>/\?:'" 进行分割,得到的词是 curl 、 7.74.0 。 日志服务 基于切分出的关键词建立索引。创建索引后,您才能对日志进行查询和分析。

日志服务 Project 支持创建全文索引和字段索引。如果您同时创建了全文索引和字段索引,以字段索引的配置为准。

索引类型

全文索引

全文索引根据 分词符 直接将整个日志切分成多个 text 类型的词语。创建全文索引后,可以通过关键词进行查询,例如查询语句: Chrome or Safari ,查询包括 Chrome 或 Safari 的日志。

重要
  • 分词符 不支持中文,开启 包含中文 选项,日志服务会自动按照中文分词。

  • 如果只配置全文索引,则只能使用全文查询功能。更多信息,请参见 查询语法与功能 。

字段索引

字段索引将日志根据字段名称(KEY)进行区分,然后在字段内使用分词符进行分割。字段索引支持 text 、 long 、 double 和 JSON 四种类型的数据。更多信息,请参见 数据类型 。创建字段索引后,可以指定字段名称和字段值( Key:Value )进行查询,也可以使用 SELECT 语句。更多信息,请参见 查询语法与功能 。

重要
  • 如需对字段进行查询或分析(SELECT 语句),必须创建字段索引。字段索引的优先级高于全文索引,如果同时创建了全文索引和字段索引,以字段索引的配置为准。

  • text 类型的字段,可以使用全文查询语句、字段查询语句和分析语句(SELECT)。

    • 如果未开启全文索引,全文查询语句是从所有 text 类型的字段中查询结果。

    • 如果已开启全文索引,全文查询语句是从所有日志中查询结果。

  • long 和 double 类型的字段,可以使用字段查询语句和分析语句(SELECT)进行查询和分析。

创建索引

重要
  • 不同的索引配置,会产生不同的查询和分析结果,请根据您的需求,合理创建索引。创建索引后需要大约一分钟生效。

  • 创建索引只对增量日志有效。如需查询历史日志,请使用 重建索引 功能。

  • 日志服务已为部分保留字段创建索引。更多信息,请参见 保留字段 。

    其中 __topic__ 和 __source__ 的索引分词符为空,查询这两个字段时,关键字必须完全匹配。

  • __tag__ 为前缀的字段不支持全文索引。只支持创建 text 类型的字段索引。您需要创建字段索引后,才能执行查询和分析操作,例如 *| select "__tag__:__receive_time__" 。

  • 日志中存在同名字段(例如都为 request_time)时,日志服务会将其中一个字段名显示为 request_time_0,底层存储的字段名仍为 request_time。因此在创建索引、查询、分析、投递、加工时,只能使用原始字段名 request_time。

控制台方式

  1. 登录 日志服务控制台 。

  2. 在 Project 列表区域,单击目标 Project。

  3. 在 日志存储 > 日志库 页签中,单击目标 Logstore。

  4. 在 Logstore 的 查询和分析 页面,单击 开启索引 。

    说明

    开启后等待 1min 左右即可查询最新数据。

    image

  5. (可选)关闭自动更新索引

    当 Logstore 为云产品专属 Logstore 或内部 Logstore 时,默认打开索引 自动更新 开关,后续如有版本更新时可以升级到内置索引最新版本。如果需要创建索引,请在 查询分析 面板中,关闭 自动更新 开关。

    警告

    删除云产品专属 Logstore 的索引会影响相关报表、告警等功能的使用。

    自动更新索引

  6. 创建索引

    创建全文索引

    单击 开启索引 后, 全文索引 开关默认打开。您可根据需要选择是否打开 日志聚类 、 大小写敏感 、 包含中文 功能,也可选择指定 分词符 或自定义 分词符 。

    页面配置如下所示:

    image

    配置项说明如下所示:

    参数

    说明

    日志聚类

    打开 日志聚类 开关后,日志服务在采集文本日志时会自动聚合相似度高的日志,提取共同的日志模式,帮助您快速掌握日志整体情况。更多信息,请参见 日志聚类 。

    大小写敏感

    查询时是否区分英文字母的大小写。

    • 打开 大小写敏感 开关,则查询时区分大小写。例如某条日志含有 internalError ,那么您只能使用 internalError 才能查询到该日志。

    • 关闭 大小写敏感 开关,则查询时不区分大小写。例如某条日志含有 internalError ,那么您使用关键字 INTERNALERROR 和 internalerror 都能查到该日志。

    包含中文

    查询时是否区分中英文。

    • 打开 包含中文 开关后,如果日志中包含中文,则按照中文语法拆分中文内容,按照分词符的设置拆分英文内容。

      重要

      中文分词对写入速度会有一定影响,请根据需求谨慎设置。

    • 关闭 包含中文 开关后,按照分词符的设置拆分所有内容。

    例如日志内容为 user:SLS 日志服务用户张先生 。

    • 关闭 包含中文 开关后,按照分词符半角冒号(:)进行拆分,日志会被拆分为 user 、 SLS 日志服务用户张先生 ,您可以通过 user 或 SLS 日志服务用户张先生 查找该日志。

    • 打开 包含中文 开关后,日志服务后台分词器将日志拆分为 user 、 SLS 、 日志服务 、 用户 和 张先生 ,您通过 日志服务 或 张先生 等词都可以查找到该日志。

    分词符

    根据指定分词符,将日志内容拆分成多个词。日志服务的默认分词符为 , '";=()[]{}?@&<>/:\n\t\r 。当默认设置不能满足您的需求时,您可以自定义设置分词符。所有的 ASCII 码都可被定义为分词符。

    如果设置 分词符 为空,则字段值将被当成一个整体,您只能通过完整字符串或模糊查询查找对应的日志。

    例如日志内容为 /url/pic/abc.gif 。

    • 如果不设置任何分词符,整条日志被作为一个词 /url/pic/abc.gif ,您只能通过完整字符串 /url/pic/abc.gif 或模糊查询 /url/pic/* 查找该日志。

    • 如果设置分词符为正斜线(/),则原始日志被拆分为 url 、 pic 和 abc.gif 三个词,您通过任意一个词或词的模糊查询都可以找到该日志,例如 url 、 abc.gif 、 pi* 、 /url/pic/abc.gif 。

    • 如果设置分词符为正斜线(/)和半角句号(.),则原始日志被拆分为 url 、 pic 、 abc 和 gif 四个词,您通过任意一个词或词的模糊查询都可以找到该日志。

    创建字段索引

    单击 开启索引 后。您可在 查询分析 页面单击 自动生成索引 。日志服务会根据采集时预览数据中的第一条内容,自动生成字段索引。如需自定义字段索引,可单击页面下方的 + 创建,具体字段说明请参见 配置项说明 。

    首次打开时页面如下所示: image

    字段索引配置项如下所示:

    image

    配置项说明 如下所示:

    参数

    说明

    字段名称

    日志字段名称(KEY),例如 client_ip 。

    字段名称只能包括字母、数字或下划线(_),且只能以字母或下划线(_)开头。

    重要
    • 设置公网 IP 地址、Unix 时间戳等 __tag__ 字段的索引时,需设置 字段名称 为 __tag__:KEY 形式,例如 __tag__:__receive_time__ 。更多信息,请参见 保留字段 。

    • __tag__ 字段不支持数值类型索引,请将所有 __tag__ 字段的索引的 类型 设置为 text 。

    类型

    日志字段值(Value)的数据类型,可选值为 text 、 long 、 double 和 json 。更多信息,请参见 数据类型 。

    long 和 double 类型不支持设置 大小写敏感 、 包含中文 和 分词符 。

    别名

    字段的别名,例如设置 client_ip 字段的别名为 ip 。

    字段别名只能包括字母、数字或下划线(_),且只能以字母或下划线(_)开头。

    重要

    别名仅用于分析语句(SELECT 语句),查询语句中仍需使用原始字段名称。更多信息,请参见 列的别名 。

    大小写敏感

    查询时是否区分英文字母的大小写。

    • 打开 大小写敏感 开关,则查询时区分大小写。例如某条日志含有 internalError ,那么您只能使用 internalError 才能查询到该日志。

    • 关闭 大小写敏感 开关,则查询时不区分大小写。例如某条日志含有 internalError ,那么您使用关键字 INTERNALERROR 和 internalerror 都能查到该日志。

    分词符

    根据指定分词符,将日志内容拆分成多个词。日志服务的默认分词符为 , '";=()[]{}?@&<>/:\n\t\r 。当默认设置不能满足您的需求时,您可以自定义设置分词符。所有的 ASCII 码都可被定义为分词符。

    如果设置 分词符 为空,则字段值将被当成一个整体,您只能通过完整字符串或模糊查询查找对应的日志。

    例如日志内容为 /url/pic/abc.gif 。

    • 如果不设置任何分词符,整条日志被作为一个词 /url/pic/abc.gif ,您只能通过完整字符串 /url/pic/abc.gif 或模糊查询 /url/pic/* 查找该日志。

    • 如果设置分词符为正斜线(/),则原始日志被拆分为 url 、 pic 和 abc.gif 三个词,您通过任意一个词或词的模糊查询都可以找到该日志,例如 url 、 abc.gif 、 pi* 、 /url/pic/abc.gif 。

    • 如果设置分词符为正斜线(/)和半角句号(.),则原始日志被拆分为 url 、 pic 、 abc 和 gif 四个词,您通过任意一个词或词的模糊查询都可以找到该日志。

    包含中文

    查询时是否区分中英文。

    • 打开 包含中文 开关后,如果日志中包含中文,则按照中文语法拆分中文内容,按照分词符的设置拆分英文内容。

      重要

      中文分词对写入速度会有一定影响,请根据需求谨慎设置。

    • 关闭 包含中文 开关后,按照分词符的设置拆分所有内容。

    例如日志内容为 user:SLS 日志服务用户张先生 。

    • 关闭 包含中文 开关后,按照分词符半角冒号(:)进行拆分,日志会被拆分为 user 、 SLS 日志服务用户张先生 ,您可以通过 user 或 SLS 日志服务用户张先生 查找该日志。

    • 打开 包含中文 开关后,日志服务后台分词器将日志拆分为 user 、 SLS 、 日志服务 、 用户 和 张先生 ,您通过 日志服务 或 张先生 等词都可以查找到该日志。

    开启统计

    打开 开启统计 功能后,您才能对该字段进行统计分析。

  7. (可选)设置字段的最大长度

    SQL 分析过程中,默认为截取一定长度, 日志服务 的默认配置为 2048 字节,即 2KB。如果您需要修改字段值的最大长度,可在 查询分析 页面底部设置 统计字段(text)最大长度 ,取值范围为 64~16384 字节。

    重要
    • 更新索引配置只对增量数据有效。

    • 如果单个字段值长度超过最大长度,超出部分将被截断,不参与分析。

    设置字段最大长度

API 方式

日志服务 支持通过 API 方式管理索引。具体操作,请参见:

  • CreateIndex - 创建索引

  • GetIndex - 获取索引

  • UpdateIndex - 更新索引

  • DeleteIndex - 删除索引

SDK 方式

日志服务 支持通过多语言 SDK 进行索引管理,以下列举一些常用的 SDK。更多信息,请参见 SDK 参考概述 。

Java

使用 日志服务 Java SDK 方式管理索引的具体操作,请参见 使用 Java SDK 管理索引 。

Python

使用 日志服务 Python SDK 方式管理索引的具体操作,请参见 使用 Python SDK 管理索引 。

日志服务除自研的 SDK 外,还支持公共的阿里云 SDK,关于阿里云 SDK 的使用方式,请参见 日志服务_SDK 中心-阿里云 OpenAPI 开发者门户 。

CLI 方式

日志服务 提供命令行工具 CLI(Command Line Interface)管理索引。具体操作,请参见:

  • create_index

  • delete_index

  • get_index_config

  • update_index

更新索引

操作步骤

在目标 Logstore 的 查询和分析 页面,选择 查询分析属性 > 属性 。不同的索引配置,会产生不同的查询和分析结果,请根据您的需求,合理更新索引。更新索引后需要大约一分钟生效。

image

关闭索引

重要

关闭索引 后,历史索引的存储空间将在当前 Logstore 的数据保存时间到期后,自动被清除。

操作步骤

在目标 Logstore 的 查询和分析 页面,选择 查询分析属性 > 关闭索引 。

image

索引配置示例

示例 1

日志内容中有 request_time 字段,执行字段查询语句 request_time>100 。

  • 只建立全文索引,返回同时包含 request_time 、 > (非分词符)、 100 这三个词的日志。

  • 只建立 double 、 long 类型的字段索引,返回结果是 request_time 大于 100 的日志。

  • 建立全文索引和 double 、 long 类型的字段索引, request_time 的全文索引失效,返回结果是 request_time 大于 100 的日志。

示例 2

日志内容中有 request_time 字段,执行全文查询语句 request_time 。

  • 只建立 double 、 long 类型的字段索引,无法查询到相关日志。

  • 只建立全文索引,从所有日志文本中查询包括 request_time 的日志。

  • 只建立 text 类型的字段索引,从字段索引是 text 类型的字段中查询包括 request_time 的日志。

示例 3

日志内容中有 status 字段,执行分析语句 * | SELECT status, count(*) AS PV GROUP BY status 。

  • 只建立全文索引,无法查询到相关日志。

  • 为 status 建立字段索引,返回结果是不同的状态码及对应的 PV 总数。

索引流量说明

全文索引

所有字段名和字段值都将作为 text 类型存储,即字段名和字段值都被计入索引流量。

字段索引

不同数据类型的字段的索引流量计算方式不同。

  • text 类型:字段名和字段值都被计入索引流量中。

  • long 类型和 double 类型:字段名不计入索引流量中,每个字段值所占的索引流量统一为 8 字节。

    例如对 status 字段设置了索引( long 类型),字段值为 200 ,则字符串 status 不会被计入在索引流量中, 200 的索引流量统一为 8 字节。

  • JSON 类型:字段名和字段值都被计入到索引流量中,包括未被创建索引的子节点。更多信息,请参见 如何计算 JSON 类型字段的索引流量 。

    • 如果未对子节点设置索引,则其索引流量按照 text 类型进行计算。

    • 如果对子节点设置了索引,则其索引流量按照其子节点数据类型( text 、 long 或 double )进行计算。

计费说明

按写入数据量计费的 logstore

  • 创建的索引会占用存储空间,存储类型请参见 管理智能存储分层 。

  • 重建索引不产生费用。

  • 索引流量计费请参见 按写入数据量计费模式计费项 。

按使用功能计费的 logstore

  • 创建的索引会占用存储空间,存储类型请参见 管理智能存储分层 。

  • 创建索引会产生流量,索引流量计费请参见 按使用功能计费模式计费项 中的索引流量-日志索引和索引流量-日志索引-查询型。降低索引流量的建议,请参见 如何降低索引流量费用? 。

  • 重建索引会产生费用。计费项、计费价格和创建索引相同。

后续步骤

  • 查询和分析的示例,请参见:

    • Copilot:AI 辅助 SQL 语句自动生成

    • 查询与分析快速指引

    • 查询和分析网站日志

    • 查询和分析 JSON 日志

    • 采集和查询分析 Nginx 监控日志

    • 分析负载均衡 7 层访问日志 。

    • 查询轻量消息队列(原 MNS)日志

  • 优化查询的方法,请参见 提高查询分析日志速度的方法 。

  • 查询和分析 JSON 类型的网站日志,请参见 查询和分析 JSON 日志 。

常见问题

  • 为什么导入日志后查询不到日志?

    • 检查已设置的分词符是否符合要求。

    • 索引配置只对新增日志生效,如果您要查询和分析历史数据,请使用重建索引功能。具体操作,请参见 重建索引 。

  • 如何完成双重条件查询?

    需要使用两个条件查询日志时,只需同时输入两个语句即可。需要在 Logstore 中查询数据状态不是 OK 或者 Unknown 的日志。 直接搜索 not OK not Unknown 即可得到符合条件的日志。

  • 如何查询包括包含多个关键字的日志?

    以查询 http_user_agent 字段值中包含 like Gecko 的日志为例。

    • 短语查询。http_user_agent:#"like Gecko"。 短语查询

    • like 语法。* | Select * where http_user_agent like '%like Gecko%'

  • 如何在日志中搜索包含空格的关键字?

    例如,当您搜索 POS version 时,会得到包含 POS 或者 version 的所有日志。如果使用双引号包裹,例如“POS version”,则会得到包含关键字 POS version 的所有日志。

  • 日志查询常见问题

  • 查询与分析日志的常见报错

  • 如何模糊查询日志?

  • 查询和分析 JSON 日志的常见问题

  • 如何将日志下载到本地

  • 为什么查询和分析时,字段值会被截断?

上一篇:查询与分析快速指引 下一篇:数据类型
该文章对您有帮助吗?
 
推荐文章
很拉风的罐头  ·  迷你联萌(动画) - 萌娘百科 万物皆可萌的百科全书
4 月前
玩篮球的小虾米  ·  许浩明-国际法学院
5 月前
勤奋的香槟  ·  这些年,习近平收到过哪些球衣?--时政--人民网
1 年前
腹黑的刺猬  ·  孙一峰 - 萌娘百科 万物皆可萌的百科全书
1 年前
行走的剪刀  ·  天际ME5出世,能否承担起天际汽车走量的重任? - OFweek新能源汽车网
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号