Мультитенантное приложение rails с searchkick

Немного информации о моем приложении:

  • Рельсы
  • Реализует мультиарендность с использованием драгоценного камня квартиры
  • Использует Elasticsearch через драгоценный камень searchkick

Мультиарендность будет означать, что будут перекрывающиеся идентификаторы для одной и той же модели.

Первое, что пришло мне в голову, это использовать index_prefix searchkick, задав index_prefix имя другого арендатора. Но я понял, что это не сработает, потому что значение index_prefix устанавливается при запуске приложения. И одно и то же значение останется во всем.


person tommi    schedule 25.08.2014    source источник


Ответы (3)


Я получил ответ от создателя searchkick, что это невозможно.

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

Теперь я мог бы поискать альтернативы исправления обезьян.

person tommi    schedule 28.08.2014

Что мы делаем, так это отправляем searchkick имя_индекса, подобное этому

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

Это создаст разные индексы searchkick для разных арендаторов и хорошо работает во время запросов. Однако будьте осторожны, чтобы переиндексировать модель для всех арендаторов, когда вам нужно переиндексировать.

person Kichu    schedule 20.04.2015

Похоже, что Searchkick добавил поддержку нескольких арендаторов с 16 января 2017 года. Проверьте это на https://github.com/ankane/searchkick#multi-tenancy .

person Billy Kimble    schedule 28.02.2020