前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >行业独家 | 腾讯云ES:PB日志查询大提速,自治索引查询裁剪详解!

行业独家 | 腾讯云ES:PB日志查询大提速,自治索引查询裁剪详解!

作者头像
腾讯云大数据
发布2022-11-22 14:10:15
5140
发布2022-11-22 14:10:15
举报
文章被收录于专栏:腾讯云大数据腾讯云大数据

作者:腾讯云大数据ES团队

背景概述

日志场景一般具有明显的冷热特点,比如保留7天的日志数据,但P90查询都集中在近12小时,并且在查询日志时一般使用索引前缀查询,比如filebeat-*,这种查询比指定索引名查询,耗时会长3倍以上。而日志场景一般具有近热远冷的特性,例如刚上报的日志数据,往往读写频率较高,而随着时间推移,频率则慢慢降低,因此,通配查询的必要性并不强,如果能根据该特性进行查询剪枝,将能够极大的提升查询效率。

Search流程浅析

在ES中,客户端请求可以发送到集群的任何节点,每个节点都知道任意文档所处的位置,然后转发这些请求,收集数据并返回给客户端,接收客户端请求的节点称为协调节点。协调节点将请求转发给保存数据的数据节点,每个数据节点在本地执行请求,并将结果返回给协调节点,协调节点收集完数据后,将每个数据节点的结果合并为单个全局结果并进行排序,最终将该结果返回给客户端。

基于search的搜索操作,搜索任务会被分为两个阶段执行,即query then fetch,这里需要两个阶段才能完成搜索的原因在于,通过search执行搜索任务,在查询的时候无法提前知道文档位于哪些分片,因此索引的所有分片(某个数据副本)都要参与搜素(query),然后协调节点将结果合并,再根据文档ID获取(fetch)文档内容。例如,有10个分片,我们需要查询返回前10个匹配度最高的文档,那么每个分片都需要查询出当前分片的Top10,协调节点将10✖️10的结果再次排序,返回最终Top10的结果给客户端。我们可以简单的看下query then fetch的流程。

分布式搜索流程

查询裁剪概述

从对search流程的分析来看,我们发现耗时主要集中在query阶段,由于索引前缀查询匹配到的索引的分片数量大,遍历这些分片的网络请求总耗时很高。为了降低查询延迟,结合日志场景中查询行为冷热明显的特点,我们在自治索引上做了查询裁剪优化,在查询时,协调节点可根据查询条件中指定的时间范围,结合后备索引元数据中记录的时间范围信息,提前进行数据预过滤,降低分片发送请求的数量,使得PB级日志查询性能可提高3倍以上。

查询裁剪示意图

注:理论上,所需查询的时间范围与数据总的实际时间范围差距越大,查询裁剪优势越明显。 

使用介绍

通过DSL range命令执行查询任务,示例如下:

代码语言:javascript
复制
GET /index_name/_search{  "query" : {      "constant_score" : {          "filter" : {              "range" : {                  "@timestamp" : {                      "gte" : "2022-11-01T03:07:34.348+08:00",                      "lt" : "2022-11-02T03:07:34.348+08:00"                  }              }          }      }  }}

通过SQL方式执行查询任务,示例如下:

代码语言:javascript
复制
POST /_sql?format=txt{"query": "SELECT * FROM index_name WHERE @timestamp < '2022-11-01'"}

总结

本文从日志场景的查询特点出发,对ES的search流程进行了简单的分析,并介绍了查询裁剪的基本原理与使用方式。欢迎大家使用腾讯云ES与自治索引~

您可能需要的链接;

腾讯云ES:一站式索引全托管,自治索引独家特性大揭秘!

腾讯云ES:自治索引常见使用方式介绍

腾讯云ES:一站式接入,数据链路可视化重磅来袭!

腾讯云ES:通过Filebeat采集TKE容器日志

腾讯云ES:图文详解,你想了解的Elastic APM这里全都有

腾讯云ES:Elasticsearch ILM Shrink Action源码优化与探讨

免费体验活动专区

Elasticsearch 新用户可享 2核4G,0元 体验 30 天!顺畅体验云上集群

添加小助手回复 Elasticsearch 加入 Elasticsearch 技术社区👇

推荐阅读

关注腾讯云大数据公众号

邀您探索数据的无限可能

点击“阅读原文”,了解相关产品最新动态

↓↓↓

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-11-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯云大数据 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 作者:腾讯云大数据ES团队
    • 背景概述
      • Search流程浅析
        • 查询裁剪概述
          • 使用介绍
            • 总结
            相关产品与服务
            Elasticsearch Service
            腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档