diff --git a/weed/filer/elastic/v7/elastic_store.go b/weed/filer/elastic/v7/elastic_store.go index 7bd34852f..1832ddb73 100644 --- a/weed/filer/elastic/v7/elastic_store.go +++ b/weed/filer/elastic/v7/elastic_store.go @@ -159,8 +159,16 @@ func (store *ElasticStore) FindEntry(ctx context.Context, fullpath weed_util.Ful func (store *ElasticStore) DeleteEntry(ctx context.Context, fullpath weed_util.FullPath) (err error) { index := getIndex(fullpath, false) id := weed_util.Md5String([]byte(fullpath)) - if strings.Count(string(fullpath), "/") == 1 { - return store.deleteIndex(ctx, index) + strFullpath := string(fullpath) + + // A top-level subdirectory refers to an Elasticsearch index. + // If we delete an entry at the top level, we should attempt to delete the corresponding Elasticsearch index. + if strings.Count(strFullpath, "/") == 1 { + entry, err2 := store.FindEntry(ctx, fullpath) + if err2 == nil && entry.IsDirectory() { + bucketIndex := indexPrefix + strFullpath[1:] + store.deleteIndex(ctx, bucketIndex) + } } return store.deleteEntry(ctx, index, id) }