[英]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.