O plug-in aliyun-codec compacta arquivos orientados a linha (source), orientados a coluna (doc values) e invertidos (postings) do Elasticsearch, além de oferecer suporte ao recurso source_reuse_doc_values. Essa solução é ideal para cenários com alto volume de escrita e custos elevados de armazenamento de índices, como análise de logs e séries temporais.
Observações de uso
Instale o plug-in antes de usá-lo. Para mais informações, consulte Install or uninstall built-in plug-ins.
O plug-in aliyun-codec tem suporte apenas em instâncias do Elasticsearch 7.10.0.
O recurso de compactação de índice exige a versão de kernel
1.5.0ou posterior, enquanto o recursosource_reuse_doc_valuesrequer a versão de kernel1.6.0ou posterior. Se a versão atual do kernel não atender a esses requisitos, upgrade the kernel primeiro.
Referência de desempenho
Os dados de desempenho a seguir foram registrados em um ambiente de teste específico e servem apenas como referência.
Ambiente de teste: um único índice com tamanho de 1,2 TB e 22 shards. As compactações orientadas a linha, orientadas a coluna e invertida estão ativadas, todas usando o algoritmo de compactação zstd. O conjunto de dados consiste em logs de produção do Alibaba Cloud Elasticsearch.
Compactação de índice: em comparação com um cluster sem compactação de índice:
Throughput de escrita: inalterado.
Tamanho total do índice: redução de 40%.
Latência em cenários de consulta com uso intenso de I/O: redução de 50%.
source_reuse_doc_values: em comparação com um cluster sem esse recurso ativado:
Throughput de escrita: inalterado.
Tamanho total do índice: redução de até 40%. O percentual de redução depende da proporção de campos com o recurso
source_reuse_doc_valuesativado no índice.Latência em cenários de consulta com uso intenso de I/O: varia conforme fatores como a proporção de campos com o recurso ativado e o tipo de disco do nó.
Uso do recurso de compactação de índice
A configuração index.codec é estática. Feche o índice antes de modificar essa configuração e reabra-o depois.
Por exemplo, para ativar a compactação em um índice chamado test, execute os seguintes comandos:
POST test/_close
PUT test/_settings
{
"index.codec" : "ali"
}
POST test/_open
Com essa configuração, o Elasticsearch usa o algoritmo zstd por padrão para compactar os arquivos orientados a linha (source), orientados a coluna (doc values) e invertidos (postings) do índice.
Também é possível especificar um algoritmo de compactação para um tipo de arquivo específico. O exemplo a seguir desativa a compactação para arquivos invertidos e usa o algoritmo zstd para arquivos orientados a linha e orientados a coluna. Para desativar a compactação de um tipo de arquivo, defina o parâmetro correspondente como "".
POST test/_close
PUT test/_settings
{
"index.codec":"ali",
"index.doc_value.compression.default":"zstd",
"index.postings.compression":"",
"index.source.compression":"zstd"
}
POST test/_open
A tabela a seguir lista os parâmetros de configuração do índice.
|
Parâmetro |
Descrição |
|
index.doc_value.compression.default |
* |
|
index.postings.compression |
|
|
index.source.compression |
Especifique o algoritmo de compactação para arquivos orientados a linha (source). Valores válidos: * |
|
index.postings.pfor.enabled |
Ative a otimização de codificação para postings de índice invertido. Os valores válidos são |
Uso do recurso source_reuse_doc_values
O Elasticsearch armazena várias cópias dos dados em _source, índices invertidos e doc_values. O recurso source_reuse_doc_values reduz o tamanho do índice ao remover do _source os dados já presentes em doc_values.
Ativação do recurso source_reuse_doc_values
Ative o recurso source_reuse_doc_values apenas durante a criação do índice. Não é possível desativá-lo posteriormente.
PUT test
{
"settings": {
"index": {
"ali_codec_service": {
"source_reuse_doc_values": {
"enabled": true
}
}
}
}
}
Ajuste das configurações do source_reuse_doc_values
Após ativar o recurso source_reuse_doc_values, ajuste as seguintes configurações.
Ajustar o número máximo de campos
Se a quantidade de campos com source_reuse_doc_values ativado ultrapassar o valor especificado, o Elasticsearch lançará uma exceção ou desativará automaticamente o recurso. O valor padrão é 50.
PUT _cluster/settings
{
"persistent": {
"apack.ali_codec_service.source_reuse_doc_values.max_fields": 100
}
}
Definir a imposição do limite máximo de campos
true: o Elasticsearch lança uma exceção caso o limite seja excedido.false: o Elasticsearch desativa automaticamente o recursosource_reuse_doc_valuesse o limite for ultrapassado.
PUT _cluster/settings
{
"persistent": {
"apack.ali_codec_service.source_reuse_doc_values.strict_max_fields": true
}
}
Ajustar a concorrência para leitura de valores de campo
Ao recuperar um documento original, este recurso lê e monta simultaneamente os valores dos campos onde está ativado. A concorrência padrão é 5.
PUT test/_settings
{
"index": {
"ali_codec_service": {
"source_reuse_doc_values": {
"fetch_slice": 2
}
}
}
}
Ajustar o pool de threads e o tamanho da fila
Por padrão, o tamanho do pool de threads corresponde ao número de núcleos do nó, e o tamanho da fila é 1000. Altere essas configurações apenas mediante modificação do arquivo YML. Para obter instruções, consulte Configure YML parameters.
apack.doc_values_fetch:
size: 8
queue_size: 1000