使用searchkick的多租户rails应用程序

时间:2014-08-25 10:15:14

标签: ruby-on-rails multi-tenant searchkick apartment-gem

有关我的应用的一些信息:

  • 滑轨
  • 使用apartment gem实现多租户
  • 通过searchkick gem使用Elasticsearch

多租户意味着同一型号的ID重叠。

我想到的第一件事就是使用searchkick的index_prefix,将index_prefix设置为不同的租户名称。但我意识到这不会起作用,因为在应用程序启动时会设置index_prefix的值。同样的价值将始终存在。

3 个答案:

答案 0 :(得分:0)

我收到了searchkick创建者的回复,这是不可能的。

https://github.com/ankane/searchkick/issues/268#issuecomment-53672954

现在我可能会寻找一些猴子补丁替代品。

答案 1 :(得分:0)

我们正在做的是向searchkick发送一个像这样的

的index_name
searchkick autocomplete: ["some_fields_for_auto_complete"],
             index_name: -> { [Apartment::Tenant.current, model_name.plural, Rails.env].join('_') }

这将为不同的租户创建不同的searchkick索引,并且在查询期间运行良好。虽然在必须重新索引时要小心为所有租户重建索引模型。

答案 2 :(得分:0)

自2017年1月16日起,Searchkick似乎已添加了多租户支持。在https://github.com/ankane/searchkick#multi-tenancy处进行检查。