最近更新时间:2024.02.26 16:50:34
首次发布时间:2024.02.26 16:50:34
云搜索服务支持启用企业级 SQL 分析节点,提供大规模企业级实时分析的 SQL 能力,实现通过外表方式访问索引数据。
本文介绍企业级 SQL 分析节点的使用场景。
启用企业级 SQL 分析节点的云搜索服务,支持标准 SQL、兼容 MySQL 协议和语法。云搜索服务能够使用 SQL 进行日志分析,并具备以下优势:
在日志分析场景中,常见的几种查询如下:
场景 | SQL 语句 |
---|---|
查看最新的 10 条数据 |
|
查询 source 为 '192.168.1.1'的、在指定时间段内的最新 10 条数据 |
|
查询 msg 字段中有 error 或者 404 的最新 10 条数据 |
|
查询 msg 字段中有 image 和 faq 的最新 10 条数据 |
|
统计分析实际上是根据事实表中的数据,统计任意组合的维度指标,包括过滤、分组和聚合。聚合不仅包括常见的 SUM、COUNT、AVG、MAX、MIN 等,还有 COUNT(DISTINCT)、Pipeline 聚合等。
统计分析的过程是根据模板配置和页面操作条件生成 ES 语法,执行语法,然后返回结果数据。这个过程表面看着不难,但人工编写则很难保证 ES 语法准确无误,您可以借助 SQL 服务准确地生成对应的 ES 语句。
SQL 语句查询示例可参考ElasticSearch 聚合分析。
索引是独立文档的集合体,是否匹配搜索请求取决于文档是否包含所有的所需信息和关联程度。 Elasticsearch 中单个文档的数据变更满足 ACID(原子性、一致性、隔离性、持久性), 而涉及多个文档时则不支持事务。当一个事务部分失败时,无法回滚索引数据到前一个状态。
ElasticSearch 的扁平化设计使得 ES 的索引过程和搜索过程都是快速无锁的,但很难实现关联查询。目前 ElasticSearch 开源文档给出了四种解决方案,详情请参见Managing Relations Inside Elasticsearch。SQL 服务可以认为就是开源文档中 Denormalization 思路的实践,您可以使用 SQL 服务灵活的进行跨索引查询。
示例:
存在如下两个索引。第一个索引(person
)带有“name”和“career”两个属性;第二个索引(home
)带有“person”和“location”两个属性。
{ "mappings":{ "person":{ "name":{ "type":"string" }, "career": { "type":"string" } } } }
{ "mappings":{ "home":{ "person":{ "type":"string" }, "location": { "type":"string" } } } }
如果需要查询所有教师(career='teacher')的家乡所在地时,可执行以下查询语句:
SELECT person,location FROM home JOIN person ON person=name WHERE career='teacher';