全部產品
Search
文件中心

Simple Log Service:Log Service與Elasticsearch的相容性

更新時間:Oct 29, 2024

本文介紹Log Service與Elasticsearch的相容性資訊,包括相容原理、相容的Elasticsearch API和Elasticsearch DSL(Domain Specific Language)等。

重要

本文檔為阿里雲原創文檔,智慧財產權歸阿里雲所有,由於本文檔旨在介紹阿里雲與第三方產品互動的服務能力,因此可能會提及第三方公司或產品等名稱。

相容原理

Elasticsearch是一款基於Apache Lucene的開源、分布式搜尋和分析引擎,是資料處理和分析的主流工具。當您將日誌引擎從Elasticsearch切換為Log Service時,可能遇到使用習慣以及上下遊程式修改問題。為瞭解決這些問題,Log Service提供了Elasticsearch相容介面,最大程度保障Elasticsearch查詢分析方案遷移的平滑度,降低將日誌引擎從Elasticsearch切換為Log Service的使用難度。

Log Service所提供的Elasticsearch相容介面,其相容機制是將Elasticsearch DSL查詢翻譯為Log Service的索引查詢和SQL分析查詢,並且按照Elasticsearch的API格式規範返回查詢分析結果,從而實現Elasticsearch查詢協議的相容。

說明
  • Log Service的Elasticsearch相容介面是根據Elasticsearch7.10的介面規範實現的。

  • Elasticsearch相容介面僅支援標準型Logstore,並且至少建立一個欄位索引。

Elasticsearch相容API訪問網域名稱

Elasticsearch相容API的訪問網域名稱格式為https://${project}.${sls-endpoint}/es/,例如https://etl-guangzhou.cn-guangzhou.log.aliyuncs.com/es/。其中${project}為Project名稱,${sls-endpoint}為Log ServiceProject的訪問網域名稱。更多資訊,請參見服務入口

支援的Elasticsearch API

Log Service提供的Elasticsearch相容介面支援相容如下Elasticsearch API。

要求方法

API路徑

說明

Post

/${index}/_search

查詢指定的Index。Index對應Log Service的Project和Logstore,格式為${project}.${logstore}

Post

/${index}/_async_search

批量查詢。

Post

/_msearch

批量查詢。

Post

/${index}/_bulk

寫入資料到指定的Index。

重要

_bulk介面不支援資料更新,只支援寫入資料。

Get

/${index}/_mapping

擷取指定Index的Mapping。

支援相容的Elasticsearch DSL

Log Service提供的Elasticsearch相容介面支援如下Elasticsearch DSL。

查詢相關的DSL列表

DSL

功能說明

bool

布爾運算。

match_all

匹配所有日誌。

match

索引匹配。

match_phrase

短語匹配。

查詢時,會將該運算元翻譯為Log Service的SQL LIKE文法,返回結果中的欄位列表為配置了欄位索引的欄位。

multi_match

多欄位匹配。

prefix

首碼查詢。

range

範圍查詢。

term

term查詢。

查詢時,會將該運算元翻譯為Log Service的索引查詢文法。

terms

多個term查詢。

查詢時,會將該運算元翻譯為Log Service的索引查詢文法。

wildcard

萬用字元匹配。

查詢時,會將該運算元翻譯為Log Service的SQL分析文法。

regexp

正則匹配。

查詢時,會將該運算元翻譯為Log Service的SQL regexp_like文法。返回結果中的欄位列表為配置了欄位索引的欄位。

exists

欄位存在查詢。

ids

ID欄位查詢。

彙總相關的DSL列表

類別

DSL

說明

分組統計

Date histogram

根據@timestamp欄位進行分組統計。

Histogram

根據數值間隔進行分組統計。

Range

根據數值範圍進行分組統計。

Terms

根據欄位唯一值進行分組統計。

Filter

根據單個過濾條件進行分組統計。

Filters

根據多個過濾條件進行分組統計。

指標統計

Min

統計最小值。

Max

統計最大值。

Avg

統計平均值。

Sum

統計總和。

Count

統計總數。

Cardinality

統計不重複的資料總數。

Percentiles

統計百分位。

返回日誌

Top hits

返回分組後的日誌。

Elasticsearch相容API與標準Elasticsearch API的差異點

  • Log Service提供的Elasticsearch相容API不支援更新資料。

  • Log Service提供的Elasticsearch相容API不支援包含Script的查詢語句。

  • 單個Log ServiceLogstore支援PB級資料量,因此使用Log Service提供的Elasticsearch相容API時,Elasticsearch不需要做Index滾動。

  • Log Service的索引不會自動建立,您需要通過API方式或控制台手動建立。具體操作,請參見建立索引

  • 通過Elasticsearch DSL查詢如下欄位時,請注意其映射關係。

    Elasticsearch

    Log Service

    說明

    @timestamp

    __time__

    如果查詢語句中指定了@timestamp欄位,則實際查詢時使用的是Log Service的__time__欄位。

    _id

    如果Log Service的資料中存在_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:GetLogStoreContextLogs",
                    "log:ListLogStores",
                    "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:GetLogStoreContextLogs",
                    "log:ListLogStores",
                    "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/*"
            }
        ]
    }