diff --git a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/HistoryDeleteEsDAO.java b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/HistoryDeleteEsDAO.java index d86bb434a..88ec7f886 100644 --- a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/HistoryDeleteEsDAO.java +++ b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/HistoryDeleteEsDAO.java @@ -54,19 +54,21 @@ public class HistoryDeleteEsDAO extends EsDAO implements IHistoryDeleteDAO { List indexes = client.retrievalIndexByAliases(model.getName()); List prepareDeleteIndexes = new ArrayList<>(); + List leftIndices = new ArrayList<>(); for (String index : indexes) { long timeSeries = TimeSeriesUtils.isolateTimeFromIndexName(index); if (deadline >= timeSeries) { prepareDeleteIndexes.add(index); + } else { + leftIndices.add(index); } } - - if (indexes.size() == prepareDeleteIndexes.size()) { - client.createIndex(TimeSeriesUtils.latestWriteIndexName(model)); - } - for (String prepareDeleteIndex : prepareDeleteIndexes) { client.deleteByIndexName(prepareDeleteIndex); } + String latestIndex = TimeSeriesUtils.latestWriteIndexName(model); + if (!leftIndices.contains(latestIndex)) { + client.createIndex(latestIndex); + } } }