當我最初爲我們的數據存儲編寫delete
方法時,我搞砸了,並忘記從search.Index
中刪除實體ID。現在我發現搜索結果會帶回doc_ids
,但數據存儲中不存在關聯數據。如何同步NDB搜索索引與數據存儲
我想遍歷所有索引文件並刪除那些沒有關聯數據的文件。
我想我可以做這樣的事情:
docs = videos.Index.search('').results
doc_ids = [x.doc_id for x in docs]
keys = [ndb.Key(urlsafe=x) for x in doc_ids]
entities = [key.get() for key in keys]
nones = []
for idx, i, in enumerate(entities):
if i == None: nones.append(idx)
for i in nones:
videos.Index.delete(doc_ids[i])
我想知道如果有一個sync
方法或我丟失的東西?此外videos.Index.search('')
肯定是不正確的,因爲我認爲它是多次返回相同的實體,因爲它匹配實體上的任何字段。
我喜歡這個解決方案最好。自從我參與這個項目已經有一段時間了,所以我忘了標記一個是正確的。但我認爲這是同步最好/最乾淨的方式 – mehulkar