簡體   English   中英

DocumentDB和Azure搜索:從documentDB中刪除的文檔不會在Azure搜索索引中更新

[英]DocumentDB and Azure Search: Document removed from documentDB isn't updated in Azure Search index

當我從DocumentDB中刪除文檔時,它不會從Azure搜索索引中刪除。 如果我更改文檔中的某些內容,索引將更新。 我不太確定如何在數據源中使用此“ SoftDeleteColumnDeletionDetectionPolicy”。

我的數據源如下:

{
"name": "mydocdbdatasource",
"type": "documentdb",
"credentials": {
    "connectionString": "AccountEndpoint=https://myDocDbEndpoint.documents.azure.com;AccountKey=myDocDbAuthKey;Database=myDocDbDatabaseId"
},
"container": {
    "name": "myDocDbCollectionId",
    "query": "SELECT s.id, s.Title, s.Abstract, s._ts FROM Sessions s WHERE s._ts > @HighWaterMark" 
},
"dataChangeDetectionPolicy": {
    "@odata.type": "#Microsoft.Azure.Search.HighWaterMarkChangeDetectionPolicy",
    "highWaterMarkColumnName": "_ts"
},
"dataDeletionDetectionPolicy": {
    "@odata.type": "#Microsoft.Azure.Search.SoftDeleteColumnDeletionDetectionPolicy",
    "softDeleteColumnName": "isDeleted",
    "softDeleteMarkerValue": "true"
    }
}

而且我遵循了該指南: https : //azure.microsoft.com/zh-cn/documentation/articles/documentdb-search-indexer/

我究竟做錯了什么? 我想念什么嗎?

我將描述我對數據源中的SoftDeleteColumnDeletionDetectionPolicy了解。 顧名思義,它是“ Soft Delete策略,而不是“ Hard Delete策略。 換句話說,數據仍然在您的數據源中,但是以某種方式標記為已刪除。

本質上,它的工作方式是定期Search Service將查詢數據源並通過檢查SoftDeleteColumnDeletionDetectionPolicy定義的屬性的值來檢查是否刪除了條目。 因此,在您的情況下,它將查詢DocumentDB集合並找出isDeleted屬性值為true的文檔。 然后從索引中刪除匹配的文檔。

它對您不起作用的原因是,您實際上是在刪除記錄,而不是將isDeleted的值從false更改為true 因此,它永遠不會找到匹配的值,並且不會對索引進行任何更改。

您可能要做的一件事是代替“ Hard Delete ,而首先在DocumentDB集合中進行“ Soft Delete 當搜索服務為您的數據重新編制索引時,由於該文檔已從源中被軟刪除,因此將從索引中刪除該文檔。 然后,為了節省DocumentDB級別的存儲成本,您只需稍后再通過后台進程刪除這些文檔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM