关于我的应用的一些信息:
- 导轨
- 使用公寓 gem 实现多租户
- 通过 searchkick gem 使用 Elasticsearch
多租户意味着同一模型会有重叠的 ID。
我想到的第一件事是使用 searchkick's index_prefix
,通过设置index_prefix
不同的租户名称。但我意识到这行不通,因为 的值index_prefix
是在应用程序启动时设置的。并且始终保持相同的值。
关于我的应用的一些信息:
多租户意味着同一模型会有重叠的 ID。
我想到的第一件事是使用 searchkick's index_prefix
,通过设置index_prefix
不同的租户名称。但我意识到这行不通,因为 的值index_prefix
是在应用程序启动时设置的。并且始终保持相同的值。
我收到了来自 searchkick 创建者的回复,这是不可能的。
https://github.com/ankane/searchkick/issues/268#issuecomment-53672954
现在我可能会寻找一些猴子修补替代品。
我们正在做的是向 searchkick 发送一个 index_name 像这样
searchkick autocomplete: ["some_fields_for_auto_complete"],
index_name: -> { [Apartment::Tenant.current, model_name.plural, Rails.env].join('_') }
这将为不同的租户创建不同的 searchkick 索引,并且在查询期间运行良好。尽管必须重新索引时,请小心为所有租户重新索引模型。
自 2017-01-16 起,Searchkick 似乎已添加多租户支持。在https://github.com/ankane/searchkick#multi-tenancy查看。