基本上我有两个数据源(cosmos db,azure sql),一个索引和两个 索引器。
两个索引器共享同一个主键,这使我可以将来自两个源的数据连接到一个索引中。现在的问题是,cosmos db包含多个条目,这些条目具有在索引器中用作主键的相同键,然后默认情况下(我假设)只是将所有具有相同键的条目展平,并且仅索引找到的最新条目。它可以正常运行,但是很明显缺少条目,因为只有最后找到的条目被索引了。
到目前为止,唯一的解决方案是我使用唯一键在另一个索引器中索引cosmos db。我有点想避免有多个搜索查询,但是,除非有人有更好的主意,否则这似乎是唯一的解决方案。谢谢!
答案 0 :(得分:0)
否,您不能对多个文档使用相同的密钥,密钥是用于查找的每个文档的唯一ID。如果您将多个具有相同键的文档添加到索引中,则sys将使用该键对文档执行多个更新操作,以便您只能看到最后一条记录。
如您所见, itemid是我的索引的键,并且它在cosmos db中的值都是1。
就我而言,在通过以下SQL查询创建数据源时,我使用_rid
值替换itemid
值:
SELECT u._rid as itemid, u.FirstName , u.LastName,u.Email , u._ts FROM user u where u._ts >= @HighWaterMark ORDER BY u._ts
通过这种方式,您可以将数据导入原始索引而不会出现相同的密钥问题。 如果有任何误解或不清楚的地方,请随时告诉我。