2017-10-10 52 views
0

我有一个多租户系统,每个租户在MongoDB部署中都有自己的Mongo数据库。Elasticsearch索引可能有一个由多个字段组成的主键吗?

但是对于弹性搜索索引,这都通过Mongoosastic进入一个弹性实例,用TenantDB标记以在搜索时保持数据分离。

目前我们在各种配置集合(不同的文档内容,相同的_id)的测试数据中重复使用了相同的_id,但是这在同步到弹性时会导致问题,虽然它们分开数据库,当它们变得具有相同的类型和ID的弹性时,其中一个会被丢弃。

是否可以指定ID和TenantDB作为主键?

回答

0

解决方案1:您可以在Elasticsearch中搜索多个索引。但是,如果你不能分开你的索引数据库,你可以按照下面的方法。在将数据同步到elasticsearch时,使用模式来创建弹性文档_id。例如,从mongoDb1使用mdb1_{mongo_id},从mongoDb2使用mdb2_{mongo_id}等。如果您在同一个mongo数据库中没有相同的id,这将是唯一的_ids。

解决方案2:分开索引。

相关问题