我在DocumentDb中创建了一些文档,我正在寻找如何搜索多级或 使用Azure搜索服务在单个文档中创建父子对象。
你能帮助我/任何链接。
答案 0 :(得分:0)
Azure搜索需要展平文档,因此您需要在DocumentDB中创建一个查询来帮助您完成此操作。首先,有一个document here,它将为您提供有关如何在Azure搜索中对这些更复杂的数据类型建模的信息。
另外,我更喜欢在DocumentDB中执行此展平。为此,用户定义函数(UDF)是一种很好的方法。下面是一个示例,它允许您传入一个数组并获取类型" child"的所有项目。并将其作为数组传回。
function convertToArray (data, child) {
var resultArray = [];
for (var i = 0; i < data.length; i++)
{
resultArray.push(data[i][child]);
}
return resultArray;
}
然后在DocumentDB中,你会做一个像这样的查询:
SELECT
c.userName,
udf.convertToArray(c.addresses, "city") as City
FROM c
所以如果c.addresses看起来像这样:
[
{
"city": "Toronto",
"country": "Canada"
},
{
"city": "Seattle",
"country": "USA"
}
]
UDF的输出是:
["Toronto", "Seattle"]
然后可以以Collection数据类型加载到Azure Search中。