Na página 113 do livro fala “Assim, temos de ter muito cuidado ao usar soluções que englobam o uso de muitas exclusões de documentos, pois possivelmente teremos problemas de performance. Uma melhor solução é tentarmos soluções que isolem os documentos que não são mais necessários em índices apartados, deixando que o processo de expurga seja responsável pela exclusão dos dados.”.
Como seria essa solução de utilizar índices apartados?
Porque eu entendo que se eu simplesmente apagar do índice “original” o Elasticsearch continua com o documento lá inserido, correto?
Olá, Rafael, tudo bom? Rafael, o conceito do que eu quis dizer é o seguinte: quando configuramos no logstash para gerar os índices com a máscara de data, “YYYY-mm-DD”, o que ocorre é que a cada dia um novo índice é gerado, ou seja, se tivermos por exemplo o índice “logstash-2016-05-31”, na virada para a meia-noite, o próximo documento irá criar um novo índice e será indexado no índice “logstash-2016-06-01”.
Sendo assim, temos os dados “particionados” por dia e utilizando por exemplo o plugin do Curator, podemos programar um shell onde o mesmo irá remover todos os dias mais antigos que um dado range de tempo, assim por exemplo se tivermos expurga que mantenha apenas 1 dia de dados, o Curator não irá remover documentos no dia 01/06, ele irá mandar remover o próprio índice “logstash-2016-05-31”, sendo que a deleção de índices é física.
Apenas um adendo, no caso da remoção de documentos, você está correto, o documento continua lá, porém de tempos em tempos, o Elasticsearch realiza uma operação chamada merge de segmentos, onde essas cópias inativas dos documentos são finalmente removidas fisicamente, se você tiver uma solução que envolva muitas alterações e remoções de documentos, você pode solicitar para o cluster que execute essa operação através da API optimize, assim que possível, análogo ao “System.gc()” do Java. Veja mais informações em:
https://www.elastic.co/guide/en/elasticsearch/guide/current/merge-process.html
abs