diff --git a/search/document_store.go b/search/document_store.go
index a8c8bd9295666be0be8320f1274659a0f1e462b6..bd5e4e32606b2f835d222c4f0ca5f08a88ace940 100644
--- a/search/document_store.go
+++ b/search/document_store.go
@@ -19,6 +19,7 @@ type DocumentStore interface {
 	Write(id string, data interface{}) error
 	Search(query Query, limit int64) (ids []string, totalCount int, err error)
 	Get(id string) (doc interface{}, err error)
+	Delete(id string) error
 }
 
 type documentStore struct {
@@ -283,3 +284,30 @@ func (ds *documentStore) Get(id string) (doc interface{}, err error) {
 	}
 	return source.Interface(), nil
 }
+
+func (ds *documentStore) Delete(id string) (err error) {
+	if ds == nil {
+		return errors.Errorf("document store == nil")
+	}
+	del := opensearchapi.DeleteRequest{
+		Index:        ds.name,
+		DocumentType: "_doc",
+		DocumentID:   id,
+	}
+	delResponse, err := del.Do(context.Background(), ds.w.client)
+	if err != nil {
+		err = errors.Wrapf(err, "failed to del document")
+		return
+	}
+
+	switch delResponse.StatusCode {
+	case http.StatusOK:
+	case http.StatusNotFound:
+	case http.StatusNoContent:
+	default:
+		resBody, _ := ioutil.ReadAll(delResponse.Body)
+		err = errors.Errorf("Del failed with HTTP status %v: %s", delResponse.StatusCode, string(resBody))
+		return
+	}
+	return nil
+}