package org.stagemonitor.core.elasticsearch; import java.util.TimerTask; /** * A task that runs periodically and calls _optimize on old Elasticsearch logstash-style indices. * <p/> * By optimizing, we are reducing the index size and make the overall index performance a bit faster. * But an optimisation process is I/O heavy. */ public class OptimizeIndicesTask extends TimerTask { private final String indexPrefix; private final int optimizeIndicesOlderThanDays; private final ElasticsearchClient elasticsearchClient; private final IndexSelector indexSelector; public OptimizeIndicesTask(IndexSelector indexSelector, String indexPrefix, int optimizeIndicesOlderThanDays, ElasticsearchClient elasticsearchClient) { this.indexSelector = indexSelector; this.indexPrefix = indexPrefix; this.optimizeIndicesOlderThanDays = optimizeIndicesOlderThanDays; this.elasticsearchClient = elasticsearchClient; } @Override public void run() { final String indexPatternOlderThanDays = indexSelector.getIndexPatternOlderThanDays(indexPrefix, optimizeIndicesOlderThanDays); elasticsearchClient.optimizeIndices(indexPatternOlderThanDays); } }