我有一个多租户系统,每个租户都可以在MongoDB部署中获得自己的Mongo数据库。
然而,对于弹性搜索索引,这一切都通过Mongoosastic进入一个弹性实例,用TenantDB标记,以便在搜索时保持数据分离。
目前我们在测试数据中的多个数据库中重复使用了一些相同的_id用于各种配置集合(不同的文档内容,相同的_id),但是当同步到弹性时会导致问题,尽管它们和# 39;当它们变成具有相同类型和ID的弹性时,在单独的数据库中,其中一个被丢弃。
是否可以指定ID和TenantDB作为主键?
答案 0 :(得分:0)
解决方案1:您可以在Elasticsearch中搜索多个索引。但是,如果您无法分离数据库的索引,则可以按照以下方法进行操作。在将数据同步到elasticsearch时,使用模式创建弹性文档_id。例如,从mongoDb1使用mdb1_{mongo_id}
,从mongoDb2使用mdb2_{mongo_id}
等。如果您在同一个mongo数据库中没有相同的id,那么这将是_ids的唯一性。
解决方案2:分离索引。