[Elasticsearch] Como o Elasticsearch exclui fisicamente os dados históricos de um determinado período?

Insira a descrição da imagem aqui

1. Visão Geral

Reimpresso: https://blog.csdn.net/laoyang360/article/details/80038930

1. Inscrição
Pensando em deletar, a cognição básica é deletar, que se subdivide em deletar documentos e deletar índices; para deletar dados históricos, a cognição básica é: deletar dados com uma determinada condição, usar delete_by_query.
Operação real encontrada:

  • Depois de excluir o documento, o espaço em disco não diminuiu imediatamente, mas aumentou?
  • Além de tarefas cronometradas + delete_by_query, existe uma maneira melhor?

2. Operações comuns de exclusão
2.1 Excluir um único documento

DELETE /twitter/_doc/1

2.2 Excluir documentos que atendam às condições fornecidas

POST twitter/_delete_by_query
{
    
    
  "query": {
    
     
    "match": {
    
    
      "message": "some message"
    }
  }
}

Nota: Ao executar a exclusão do lote, podem ocorrer conflitos de versão. A maneira de forçar a exclusão é a seguinte:

POST twitter/_doc/_delete_by_query?conflicts=proceed
{
    
    
  "query": {
    
    
    "match_all": {
    
    }
  }
}

2.3 Exclua um único índice

DELETE /twitter

2.4 Excluir todos os índices

DELETE /_all

ou

DELETE /*

Excluir todos os índices é uma operação muito perigosa, então tome cuidado.

3. O que você fez para excluir o documento nos bastidores?
O resultado de retorno após a exclusão:

{
    
    
  "_index": "test_index",
  "_type": "test_type",
  "_id": "22",
  "_version": 2,
  "result": "deleted",
  "_shards": {
    
    
    "total": 2,
    "successful": 1,
    "failed": 0
  },
  "_seq_no": 2,
  "_primary_term": 17
}

Interpretação:

Cada documento no índice tem controle de versão.
Ao excluir um documento, você pode especificar a versão para garantir que o documento relacionado que estamos tentando excluir seja realmente excluído e não tenha sido alterado durante este período.

Cada operação de gravação realizada em um documento, incluindo exclusão, aumentará sua versão.

O tempo real para excluir:

excluir um documento não remove imediatamente o documento do disco; apenas o marca como excluído. O Elasticsearch limpará os documentos excluídos em segundo plano conforme você continua a indexar mais dados.

4. Qual é a diferença entre excluir um índice e excluir um documento?
1) Excluir um índice liberará espaço imediatamente e não há a chamada lógica de "marcação".

2) Ao excluir um documento, o novo documento é gravado e o antigo é marcado como excluído. Se o espaço em disco é liberado depende se os documentos antigos e novos estão no mesmo arquivo de segmento.Portanto, a mesclagem do segmento do plano de fundo ES pode acionar a exclusão física dos documentos antigos durante o processo de mesclagem dos arquivos de segmento.

Mas, como um fragmento pode ter centenas de arquivos de segmento, ainda há uma grande probabilidade de que documentos novos e antigos existam em segmentos diferentes e não possam ser excluídos fisicamente. Se você quiser liberar espaço manualmente, você só pode forçar a fusão periodicamente e definir max_num_segments para 1.

POST /_forcemerge

5. Como salvar apenas os dados dos últimos 100 dias?
Com o conhecimento acima, a tarefa de salvar dados por apenas quase 100 dias é dividida em:

  • 1) delete_by_query é definido para recuperar dados por quase 100 dias;
  • 2) Execute a operação forcemerge para liberar manualmente o espaço em disco.

O script de exclusão é o seguinte:

#!/bin/sh
curl -H'Content-Type:application/json' -d'{
    
    
    "query": {
    
    
        "range": {
    
    
            "pt": {
    
    
                "lt": "now-100d",
                "format": "epoch_millis"
            }
        }
    }
}
' -XPOST "http://192.168.1.101:9200/logstash_*/
_delete_by_query?conflicts=proceed"

O script de mesclagem é o seguinte:

#!/bin/sh
curl -XPOST 'http://192.168.1.101:9200/_forcemerge?
only_expunge_deletes=true&max_num_segments=1'

6. Existe um método mais geral?
Sim, use a ferramenta curadora de ferramentas do site oficial do ES.

6.1 Introdução ao curador
Objetivo principal: planejar e gerenciar o índice ES. Aceite operações comuns: criar, excluir, mesclar, reindexar, instantâneo e outras operações.

6.2 Endereço do site oficial do curador
http://t.cn/RuwN0oM

Endereço Git: https://github.com/elastic/curator

6.3
Endereço do assistente de instalação do curador : http://t.cn/RuwCkBD

Nota: Os
blogs e tutoriais do curador são infinitos, mas existem grandes diferenças entre a versão antiga e a nova versão do curador. Recomenda-se consultar a implementação manual mais recente no site oficial.
A versão antiga do método de linha de comando não é mais compatível com a nova versão.

6.4 Operação de linha de comando do curador

$ curator --help
Usage: curator [OPTIONS] ACTION_FILE

  Curator for Elasticsearch indices.

  See http://elastic.co/guide/en/elasticsearch/client/curator/current

Options:
  --config PATH  Path to configuration file. Default: ~/.curator/curator.yml
  --dry-run      Do not perform any changes.
  --version      Show the version and exit.
  --help         Show this message and exit.

testemunho:

  • Arquivo de configuração config.yml: configure o endereço ES a ser conectado, a configuração do log, o nível do log, etc .;

Arquivo de execução action.yml: Configure a operação a ser realizada (pode ser em lote), configure o formato do índice (correspondência de prefixo, correspondência regular, etc.)
6.5 Cenários aplicáveis ​​do curador O
mais importante é:

Veja a operação de exclusão como exemplo: o curador pode excluir o índice após x dias de forma muito simples. A premissa é que a nomenclatura do índice deve seguir um padrão de nomenclatura específico, como: o índice com o nome do dia: logstash_2018.04.05.

O padrão de nomenclatura precisa corresponder à cadeia de tempo em delete_indices em action.yml.

7. Resumo
Consulte os documentos mais recentes no site oficial. Os documentos históricos de versões históricas são fáceis de enganar;
praticar mais, não apenas saber;
medcl: A nova versão do ES 6.3 tem um Gerenciamento de Ciclo de Vida de Índice que pode facilmente gerenciar a preservação do índice o termo.

Acho que você gosta

Origin blog.csdn.net/qq_21383435/article/details/109280911
Recomendado
Clasificación