O Simple Log Service oferece uma API compatível com Elasticsearch que traduz consultas em DSL do Elasticsearch para consultas de índice do SLS e análises SQL. Este tópico aborda os princípios de compatibilidade, as operações de API compatíveis e a sintaxe DSL aceita.
Este documento é de propriedade da Alibaba Cloud. Ele descreve como os serviços da Alibaba Cloud interagem com produtos de terceiros e pode mencionar nomes de empresas ou produtos externos.
Princípio de compatibilidade
O Elasticsearch é um mecanismo de busca e análise distribuído e open-source, baseado no Apache Lucene. Ao migrar do Elasticsearch para o Simple Log Service, talvez seja necessário ajustar fluxos de trabalho e modifique programas upstream e downstream. O Simple Log Service fornece uma API compatível com Elasticsearch para simplificar essa migração.
Essa API converte consultas em DSL do Elasticsearch em consultas de índice e análises SQL do Simple Log Service e retorna os resultados no formato da API do Elasticsearch.
A API compatível com Elasticsearch baseia-se na especificação do Elasticsearch 7.10.
Essa API é compatível apenas com Logstores padrão e exige a criação de pelo menos um índice de campo.
Endpoints da API compatível com Elasticsearch
O formato do endpoint é https://${project}.${sls-endpoint}/es/. Por exemplo: https://etl-guangzhou.cn-guangzhou.log.aliyuncs.com/es/. ${project} representa o nome do projeto e ${sls-endpoint} corresponde ao endpoint do Simple Log Service. Para mais informações, consulte Endpoint.
Operações de API do Elasticsearch compatíveis
A API compatível com Elasticsearch aceita as seguintes operações.
|
Método de requisição |
Caminho da API |
Descrição |
|
Post |
/${index}/_search |
Consulta o índice especificado. O índice mapeia para um projeto e Logstore do Simple Log Service no formato |
|
Post |
/${index}/_async_search |
Executa uma consulta em lote. |
|
Post |
/_msearch |
Realiza uma consulta em lote. |
|
Post |
/${index}/_bulk |
Grava dados no índice especificado. Importante
A operação _bulk aceita apenas gravação de dados e não permite atualizações. |
|
Get |
/${index}/_mapping |
Obtém o mapeamento do índice especificado. |
DSL do Elasticsearch compatível
A API compatível com Elasticsearch aceita os seguintes elementos de DSL do Elasticsearch.
DSL relacionado a consultas
|
DSL |
Descrição |
|
bool |
Executa uma operação booleana. |
|
match_all |
Corresponde a todos os logs. |
|
match |
Corresponde a um índice. |
|
match_phrase |
Correspondência de frase. Traduzido para uma cláusula SQL LIKE. Retorna apenas campos indexados. |
|
multi_match |
Corresponde a múltiplos campos. |
|
prefix |
Executa uma consulta por prefixo. |
|
range |
Executa uma consulta por intervalo. |
|
term |
Executa uma consulta por termo. Traduzido para a sintaxe de consulta de índice do Simple Log Service. |
|
terms |
Executa uma consulta por múltiplos termos. Traduzido para a sintaxe de consulta de índice do Simple Log Service. |
|
wildcard |
Corresponde a um padrão curinga. Traduzido para a sintaxe de análise SQL do Simple Log Service. |
|
regexp |
Corresponde a uma expressão regular. Traduzido para a sintaxe SQL regexp_like. Retorna apenas campos indexados. |
|
exists |
Verifica se um campo existe. |
|
ids |
Consulta o campo ID. |
DSL relacionado a agregações
|
Categoria |
DSL |
Descrição |
|
Estatísticas de grupo |
Date histogram |
Agrupa estatísticas pelo campo |
|
Histogram |
Agrupa estatísticas por um intervalo numérico. |
|
|
Range |
Agrupa estatísticas por uma faixa numérica. |
|
|
Terms |
Agrupa estatísticas pelos valores únicos de um campo. |
|
|
Filter |
Agrupa estatísticas por uma única condição de filtro. |
|
|
Filters |
Agrupa estatísticas por múltiplas condições de filtro. |
|
|
Estatísticas de métrica |
Min |
Calcula o valor mínimo. |
|
Max |
Calcula o valor máximo. |
|
|
Avg |
Calcula o valor médio. |
|
|
Sum |
Calcula a soma. |
|
|
Count |
Calcula a contagem. |
|
|
Cardinality |
Calcula a contagem de valores únicos. |
|
|
Percentiles |
Calcula o percentil. |
|
|
Log retornado |
Top hits |
Retorna os principais logs correspondentes por grupo. |
Diferenças em relação ao Elasticsearch padrão
A API compatível com Elasticsearch não aceita atualização de dados.
A API compatível com Elasticsearch não aceita consultas baseadas em scripts.
Um único Logstore aceita petabytes de dados, eliminando a necessidade de rollover de índices.
Os índices não são criados automaticamente. Crie-os pela API ou pelo console. Criar um índice.
-
Os campos abaixo possuem mapeamentos específicos no DSL do Elasticsearch.
Elasticsearch
Simple Log Service
Descrição
@timestamp__time__O campo
@timestampmapeia para o campo__time__do Simple Log Service nas consultas._idNenhum
Mapeia para o campo
_idcaso exista nos dados do Simple Log Service. Se o campo_idnão existir, será preenchido automaticamente comuuidou_pack_meta.
Autorização RAM
Conceda permissões de consulta e gravação na API compatível com Elasticsearch a um usuário do Resource Access Management (RAM) utilizando uma das políticas de acesso abaixo.
Políticas do sistema: fáceis de configure.
Políticas personalizadas: oferecem permissões granulares, mas têm configuração mais complexa.
Autorização simples
Utilize políticas do sistema para conceder permissões de consulta e gravação na API compatível com Elasticsearch a um usuário RAM. Gerencie as permissões de um usuário RAM.
|
Nome da política do sistema |
Permissão de consulta |
Permissão de gravação |
|
AliyunLogFullAccess |
Sim |
Sim |
|
AliyunLogReadOnlyAccess |
Sim |
Não |
Políticas personalizadas
Use políticas personalizadas para obter permissões granulares. Crie uma política personalizada. Gerencie as permissões de um usuário RAM.
-
Conceda permissões de consulta e gravação para a API compatível com Elasticsearch.
{ "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/*" } ] } -
Conceda apenas permissão de consulta para a API compatível com Elasticsearch.
{ "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/*" } ] } -
Conceda apenas permissão de gravação para a API compatível com Elasticsearch.
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "log:PostLogStoreLogs" ], "Resource": "acs:log:*:*:project/*" } ] }