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.