Azure 搜索如何获取复杂类型中的一个特定项 collection
Azure Search how to get one specific item in a complex type collection
我有一个歌曲索引,每首歌都有 collection 个顾客。
如果我过滤包含特定客户的歌曲效果很好,但我得到的结果是这首歌的所有客户。
我需要只与我在 collection.
中筛选的客户一起获取歌曲
我的索引是这样的:
{
SongId: 1,
Title: "My song",
Artist: "Artist",
Customers: [
{
CustomerId: 1,
...more customer data
}
{
CustomerId: 2,
...more customer data
}
]
}
我需要按标题过滤歌曲,如果客户 1 不在该歌曲的 collection 中,则只获取客户 1 的数据或没有客户。
这可能吗?
今天这是不可能的。您必须过滤掉 client-side.
上的复杂集合元素
此外,您在问题中没有提到这一点,但歌曲与客户之间的关系的基数似乎很高。如果是这种情况,您应该考虑不同的数据模型,因为每个文档的复杂集合中可以包含的元素数量有 hard limit。即使没有这个限制,复杂集合也有实际限制,例如围绕文档大小和无法在索引期间增量更新它们。
如果您的模型每首歌最多有几百个顾客,您可能没问题,但如果有数千个或更多,您应该重新考虑您的设计。
我有一个歌曲索引,每首歌都有 collection 个顾客。 如果我过滤包含特定客户的歌曲效果很好,但我得到的结果是这首歌的所有客户。 我需要只与我在 collection.
中筛选的客户一起获取歌曲我的索引是这样的:
{
SongId: 1,
Title: "My song",
Artist: "Artist",
Customers: [
{
CustomerId: 1,
...more customer data
}
{
CustomerId: 2,
...more customer data
}
]
}
我需要按标题过滤歌曲,如果客户 1 不在该歌曲的 collection 中,则只获取客户 1 的数据或没有客户。 这可能吗?
今天这是不可能的。您必须过滤掉 client-side.
上的复杂集合元素此外,您在问题中没有提到这一点,但歌曲与客户之间的关系的基数似乎很高。如果是这种情况,您应该考虑不同的数据模型,因为每个文档的复杂集合中可以包含的元素数量有 hard limit。即使没有这个限制,复杂集合也有实际限制,例如围绕文档大小和无法在索引期间增量更新它们。
如果您的模型每首歌最多有几百个顾客,您可能没问题,但如果有数千个或更多,您应该重新考虑您的设计。