我使用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,并将其设置为搜索参数?
提前致谢 !!
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映射功能,保存索引,重置索引,然后再次运行它。这一次的数据将被保存,因为它是在源。
基于既然你ID @GauravMantri评论的评论是base 64编码之前存储这样无论是你可以同时存储的ID,当这些数据本身独特的无钥匙编码的建议删除编码。
另外,您可以endcode值你已经有喜欢System.Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes("IdBeforeEncodingAsString"))
与作为搜索参数的使用,它应该工作,因为该字符串的base64编码值存储为标识。