有没有办法忽略索引上不存在的任何字段或索引器上没有字段映射?或者在索引器或导入上指定忽略特定字段的方法?
我正在创建一个 Azure 搜索索引,其中数据源是 CosmosDB。由于 CosmosDB 具有灵活的架构,我可能会定期添加新字段。我希望这些不被索引,并且保留原始模式。有没有办法在索引或索引器上设置在向索引添加新项目时忽略新字段(甚至是此特定字段)?
我在字段映射文档中没有看到任何可以忽略字段的内容:https://learn.microsoft.com/en-us/azure/search/search-indexer-field-mappings
最佳答案
解决方案取决于您使用的模型。
- 推送模型:通过 Azure 搜索 SDK 推送内容。在这种情况下,您可以完全控制提交搜索的对象,并且您的问题不是问题。如果您不需要某个字段,则不要将其包含在提交搜索的对象中。
- 拉取模型:您定义一个索引器,用于从内容源中拉取内容。在这里您可以使用输出字段映射。正如文档所述:“应使用输出字段映射的示例:[当您]从 Cosmos DB 数据库中索引复杂类型时。您希望访问该复杂类型上的节点并将其映射到您的字段中索引。”
参见https://learn.microsoft.com/en-us/azure/search/cognitive-search-output-field-mapping
所以,解决方案是不要忽略任何事情。您宁愿明确地映射您想要的位。
关于Azure 认知搜索忽略字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70976249/