簡體   English   中英

Azure 認知搜索忽略字段

[英]Azure Cognitive Search Ignore fields

有沒有辦法忽略索引上不存在或索引器上沒有字段映射的任何字段? 或者在 Indexer 或 Import 上指定忽略特定字段的方法?

我正在創建一個 Azure 搜索索引,其中數據源是 CosmosDB。 由於 CosmosDB 具有靈活的架構,我可能會定期添加新字段。 我希望這些不被索引,它仍然是原始模式。 有沒有辦法在索引或索引器上設置在向索引添加新項目時忽略新字段(甚至這個特定字段)?

我在字段映射文檔中沒有看到任何可以忽略的字段: https://learn.microsoft.com/en-us/azure/search/search-indexer-field-mappings

解決方案取決於您使用的 model。

  1. 推送 model:您通過 Azure 搜索 SDK 推送內容。 在這種情況下,您可以完全控制提交給搜索的對象,並且您的問題不是問題。 如果您不想要某個字段,則不要將其包含在您提交搜索的 object 中。
  2. 拉 model:您定義一個從內容源中提取內容的索引器。 在這里您可以使用 output 字段映射。 正如文檔所說:“當你應該使用 output 字段映射時的示例:[當你]從 Cosmos DB 數據庫中索引一個復雜類型時。你想到達那個復雜類型的節點,然后 map 將它放入你的字段中指數。”

請參閱https://docs.microsoft.com/en-us/azure/search/cognitive-search-output-field-mapping

因此,解決方案是不要忽視任何事情。 你寧願明確 map 你想要的位。

FWIW:我有一個類似的問題。 我已經有兩個模型,CosmosDB model 和 AzureSearch model。問題是我需要在后者上添加一個標志,以防萬一它沒有被標記,對索引執行刪除操作,否則執行更新。 (在我的例子中,將標志從一個 model 傳遞到另一個是最便宜的方式,否則我需要進行大的重構)。

由於我不需要 SeachModel 上的標志(持久化),因此使用JsonIgnore屬性對我有用。 如果您需要該值, FieldBuilderIgnore屬性可能會有所幫助,請參閱https://learn.microsoft.com/en-us/do.net/api/azure.search.documents.indexes.fieldbuilderignoreattribute?view=azure-do.net .

示例: https://github.com/Azure/azure-sdk-for.net/blob/main/sdk/search/Azure.Search.Documents/samples/Sample04_FieldBuilderIgnore.md

暫無
暫無

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

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