如何添加Azure的宇宙DB的主键Azure中搜索服务的搜索参数

问题描述 投票:0回答:2

我使用Azure的搜索服务来搜索我的天青CosmosDB帐户中的文档。

通过门户网站,我已经创建了一个Azure的搜索服务,并给予我现有CosmosDB作为数据源。

以下是存储在CosmosDB样本文件

{
    "id": "Engine",     
    "Sub-Components Price": [
        //Price list
    ],
    "Sub-Components": [
        "List of sub components here"
    ],      
    "Brand": "Brand Name here",     
}

当含有上述文献的CosmosDB被给定为数据源到天青搜索,id字段在内部转换为一些字符串(自动索引而定)。

我能够设置其他领域,如子组件,以品牌为搜索参数(使用C#)和搜索只有那些特定的领域。我想申请相同于id字段也。但id字段加密/编码的其他一些字符串,如下所示:

{
    "id": "UkVRX1ZFSF9DVVNUX0",     
    "Sub-Components Price": [
        //Price list
    ],
    "Sub-Components": [
        "List of sub components here"
    ],      
    "Brand": "Brand Name here",     
}

如何找回我原来的ID,并将其设置为搜索参数?

提前致谢 !!

c# azure azure-cosmosdb azure-search azure-search-.net-sdk
2个回答
3
投票

UkVRX1ZFSF9DVVNUX0是一个base64编码字符串,当你解码它,你得到REQ_VEH_CUST_

为什么值转换成编码字符串的base64?

请检查索引的详细信息。自从上在key字段中的值有正限制(https://docs.microsoft.com/en-us/rest/api/searchservice/naming-rules - 见Document Key),可能有一个在索引设置(下查找字段映射部分,然后检查是否在base64Encode字段映射应用于id映射功能),它是将和存储该值作为base64编码串。

如果您确信源id的值(即索引字段key)不会违反键字段值的规则,你可以删除这个base64encode映射功能,保存索引,重置索引,然后再次运行它。这一次的数据将被保存,因为它是在源。


1
投票

基于既然你ID @GauravMantri评论的评论是base 64编码之前存储这样无论是你可以同时存储的ID,当这些数据本身独特的无钥匙编码的建议删除编码。

另外,您可以endcode值你已经有喜欢System.Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes("IdBeforeEncodingAsString"))与作为搜索参数的使用,它应该工作,因为该字符串的base64编码值存储为标识。

© www.soinside.com 2019 - 2024. All rights reserved.