diff --git a/src/main/java/net/geedge/asw/module/runner/util/PcapParserThread.java b/src/main/java/net/geedge/asw/module/runner/util/PcapParserThread.java index abd3d31..dc91382 100644 --- a/src/main/java/net/geedge/asw/module/runner/util/PcapParserThread.java +++ b/src/main/java/net/geedge/asw/module/runner/util/PcapParserThread.java @@ -17,6 +17,7 @@ import org.opensearch.client.opensearch.core.BulkRequest; import org.opensearch.client.opensearch.core.BulkResponse; import org.opensearch.client.opensearch.core.bulk.BulkResponseItem; import org.opensearch.client.opensearch.indices.CreateIndexRequest; +import org.opensearch.client.opensearch.indices.DeleteIndexRequest; import org.opensearch.client.opensearch.indices.ExistsRequest; import org.opensearch.client.opensearch.indices.IndexSettings; @@ -152,8 +153,12 @@ public class PcapParserThread implements Runnable { * @param jsonArray */ private void uploadToOpenSearch(JSONArray jsonArray) { + String pcapPath = pcapEntity.getPath(); + String md5Hex = T.DigestUtil.md5Hex(T.FileUtil.file(pcapPath)); + String workspaceName = pcapEntity.getWorkspace().getName(); - String indexName = String.format("workspace-%s", workspaceName); + String indexName = String.format("workspace-%s-%s", workspaceName, md5Hex); + try { // check if index exists boolean indexExists = openSearchClient.indices() @@ -162,23 +167,25 @@ public class PcapParserThread implements Runnable { if (log.isDebugEnabled()) { log.debug("[uploadToOpenSearch] [index: {}] [exists: {}]", indexName, indexExists); } - // if index not exists, create index with default settings - if (!indexExists) { - openSearchClient.indices().create( - new CreateIndexRequest.Builder() - .index(indexName) - .settings(new IndexSettings.Builder().build()) - .build() - ); - log.debug("[uploadToOpenSearch] [index: {}] [created]", indexName); + // if index exists, delete + if (indexExists) { + openSearchClient.indices().delete(new DeleteIndexRequest.Builder().index(indexName).build()); + log.debug("[uploadToOpenSearch] [index: {}] [deleted]", indexName); } + // create index with default settings + openSearchClient.indices().create( + new CreateIndexRequest.Builder() + .index(indexName) + .settings(new IndexSettings.Builder().build()) + .build() + ); + // upload data in bulk BulkRequest.Builder br = new BulkRequest.Builder(); - String pcapId = pcapEntity.getId(); for (int i = 0; i < jsonArray.size(); i++) { JSONObject jsonObject = (JSONObject) jsonArray.get(i); - String id = pcapId + "-" + String.valueOf(i); + String id = String.valueOf(i); br.operations(op -> op.index( idx -> idx.index(indexName) .id(id)