建模要在DocumentDB和Azure搜索中使用的数据

时间:2017-01-02 07:36:50

标签: c# azure azure-cosmosdb azure-search

这是我对另一个问题的后续问题 - Benefits of using Document DB after connecting with Azure Search

将数据存储在DocumentDB中并与Azure Search集成需要您对数据建模两次 - 一次用于DocDB中的文档,另一次用于Azure搜索中的搜索实体。

有人成功完成了吗?有没有办法可以将我在DocDB中定义的文档重用为Azure搜索中的搜索实体?

编辑:我已经与索引器集成以允许在Azure搜索中进行搜索,搜索本身效果很好。我现在面临以下情况 - 我使用DocumentDB上的查询获取项目,该查询过滤了几个属性。如果我想允许使用相同的过滤器集进行搜索,我需要指定我用作索引字段的属性。因此,通过指定这些字段,我实际上是在创建一个新的数据模型(它是我在DocumentDB中的类的重复)

例如,假设我有以下类存储在DocDB中:

class MyItem
{
    public string Name { get; set;}
    public double Price { get; set; }
}

我创建了一个索引,指定我要搜索名称,并过滤价格。现在我向类添加新功能,以便它还显示可用性

class MyItem
{
    public string Name { get; set;}
    public double Price { get; set; }
    public bool IsAvailable { get; set; }
}

现在我需要在我的索引中添加IsAvailabile作为可过滤字段,并重新编制索引。所以索引器的字段列表结果是我的类的属性的重复,也导致我的代码中的耦合。有没有办法有效地解决这个问题?

1 个答案:

答案 0 :(得分:0)

数百名客户成功使用DocumentDB / Search集成。但是,您需要记住,虽然DocumentDb支持存储任意JSON文档,但Azure搜索目前仅支持由基本类型和字符串数组组成的“平面”文档。因此,您可能需要使用数据源的查询参数将DocumentDb文档“展平”为搜索模式的形状。