文档

日志服务与Elasticsearch的兼容性

更新时间:

本文介绍日志服务与Elasticsearch的兼容性信息,包括兼容原理、兼容的Elasticsearch API和Elasticsearch DSL(Domain Specific Language)等。

重要

本文档为阿里云原创文档,知识产权归阿里云所有,由于本文档旨在介绍阿里云与第三方产品交互的服务能力,因此可能会提及第三方公司或产品等名称。

兼容原理

Elasticsearch是一款基于Apache Lucene的开源、分布式搜索和分析引擎,是数据处理和分析的主流工具。当您将日志引擎从Elasticsearch切换为日志服务时,可能遇到使用习惯以及上下游程序修改问题。为了解决这些问题,日志服务提供了Elasticsearch兼容接口,最大程度保障Elasticsearch查询分析方案迁移的平滑度,降低将日志引擎从Elasticsearch切换为日志服务的使用难度。

日志服务所提供的Elasticsearch兼容接口,其兼容机制是将Elasticsearch DSL查询翻译为日志服务的索引查询和SQL分析查询,并且按照Elasticsearch的API格式规范返回查询分析结果,从而实现Elasticsearch查询协议的兼容。

说明
  • 日志服务的Elasticsearch兼容接口是根据Elasticsearch7.10的接口规范实现的。

  • Elasticsearch兼容接口仅支持标准型Logstore,并且至少创建一个字段索引。

image

Elasticsearch兼容API访问域名

Elasticsearch兼容API的访问域名格式为https://${project}.${sls-endpoint}/es/,例如https://etl-guangzhou.cn-guangzhou.log.aliyuncs.com/es/。其中${project}为Project名称,${sls-endpoint}为日志服务Project的访问域名。更多信息,请参见服务入口

支持的Elasticsearch API

日志服务提供的Elasticsearch兼容接口支持兼容如下Elasticsearch API。

请求方法

API路径

说明

Post

/${index}/_search

查询指定的Index。Index对应日志服务的Project和Logstore,格式为${project}.${logstore}

Post

/${index}/_async_search

批量查询。

Post

/_msearch

批量查询。

Post

/${index}/_bulk

写入数据到指定的Index。

重要

_bulk接口不支持数据更新,只支持写入数据。

Get

/${index}/_mapping

获取指定Index的Mapping。

支持兼容的Elasticsearch DSL

日志服务提供的Elasticsearch兼容接口支持兼容如下Elasticsearch DSL。

查询相关的DSL列表

DSL

功能说明

bool

布尔运算。

match_all

匹配所有日志。

match

索引匹配。

match_phrase

短语匹配。

查询时,会将该算子翻译为日志服务的SQL LIKE语法,返回结果中的字段列表为配置了字段索引的字段。

multi_match

多字段匹配。

prefix

前缀查询。

range

范围查询。

term

term查询。

查询时,会将该算子翻译为日志服务的索引查询语法。

terms

多个term查询。

查询时,会将该算子翻译为日志服务的索引查询语法。

wildcard

通配符匹配。

查询时,会将该算子翻译为日志服务的SQL分析语法。

regexp

正则匹配。

查询时,会将该算子翻译为日志服务的SQL regexp_like语法。返回结果中的字段列表为配置了字段索引的字段。

exists

字段存在查询。

ids

ID字段查询。

聚合相关的DSL列表

类别

DSL

说明

分组统计

Date histogram

根据@timestamp字段进行分组统计。

Histogram

根据数值间隔进行分组统计。

Range

根据数值范围进行分组统计。

Terms

根据字段唯一值进行分组统计。

Filter

根据单个过滤条件进行分组统计。

Filters

根据多个过滤条件进行分组统计。

指标统计

Min

统计最小值。

Max

统计最大值。

Avg

统计平均值。

Count

统计总数。

Cardinality

统计不重复的数据总数。

Percentiles

统计百分位。

返回日志

Top hits

返回分组后的日志。

Elasticsearch兼容API与标准Elasticsearch API的差异点

  • 日志服务提供的Elasticsearch兼容API不支持更新数据。

  • 日志服务提供的Elasticsearch兼容API不支持包含Script的查询语句。

  • 单个日志服务Logstore支持PB级数据量,因此使用日志服务提供的Elasticsearch兼容API时,Elasticsearch不需要做Index滚动。

  • 日志服务的索引不会自动创建,您需要通过API方式或控制台手动创建。具体操作,请参见创建索引

  • 通过Elasticsearch DSL查询如下字段时,请注意其映射关系。

    Elasticsearch

    日志服务

    说明

    @timestamp

    __time__

    如果查询语句中指定了@timestamp字段,则实际查询时使用的是日志服务的__time__字段。

    _id

    如果日志服务的数据中存在_id字段,则映射为_id字段;如果不存在,则自动使用uuid_pack_meta填充。

    RAM授权

    您可以使用如下权限策略授予RAM用户使用Elasticsearch兼容API进行查询和写入数据的权限。

    • 系统权限策略:操作简单。

    • 自定义权限策略:权限精细,配置复杂。

    极简授权

    您可以通过系统权限策略授予RAM用户使用Elasticsearch兼容API查询、写入数据的权限。具体操作,请参见为RAM用户授权

    系统权限策略名称

    查询权限

    写入权限

    AliyunLogFullAccess

    Yes

    Yes

    AliyunLogReadOnlyAccess

    Yes

    No

    自定义权限策略

    您可以通过自定义权限策略授予RAM用户使用Elasticsearch兼容API查询、写入数据的权限。具体操作,请参见创建自定义权限策略为RAM用户授权

    • 授予RAM用户使用Elasticsearch兼容API查询和写入数据权限。

      {
          "Version": "1",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "log:GetIndex",
                      "log:GetLogStoreHistogram",
                      "log:GetLogstoreLogs",
                      "log:GetLogStoreContextLogs",
                      "log:GetCursorOrData",
                      "log:GetLogstore",
                      "log:PostLogStoreLogs"
                  ],
                  "Resource": "acs:log:*:*:project/*"
              }
          ]
      }
    • 授予RAM用户使用Elasticsearch兼容API查询数据的权限。

      {
          "Version": "1",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "log:GetIndex",
                      "log:GetLogStoreHistogram",
                      "log:GetLogstoreLogs",
                      "log:GetLogStoreContextLogs",
                      "log:GetCursorOrData",
                      "log:GetLogstore"
                  ],
                  "Resource": "acs:log:*:*:project/*"
              }
          ]
      }
    • 授予RAM用户使用Elasticsearch兼容API写入数据的权限。

      {
          "Version": "1",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "log:PostLogStoreLogs"
                  ],
                  "Resource": "acs:log:*:*:project/*"
              }
          ]
      }

  • 本页导读 (1)
文档反馈