1

私のアプリに関するいくつかの情報:

  • レール
  • アパートメントジェムを使用してマルチテナンシーを実装します
  • searchkick gem による Elasticsearch の使用

マルチテナンシーとは、同じモデルに対して重複する ID が存在することを意味します。

最初に頭に浮かんだのは、別のテナントの名前にindex_prefix設定して、 searchkick を使用することでした。しかし、アプリの起動時にindex_prefixの値が設定されるため、うまくいかないことに気付きました。index_prefixそして、同じ値がずっと残ります。

4

3 に答える 3

0

searchkick の作成者から、それは不可能であるという返信を受け取りました。

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

ここで、モンキーパッチの代替案を探すかもし​​れません。

于 2014-08-28T04:58:46.993 に答える
0

私たちがやっていることは、このように index_name を searchkick に送信することです

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

これにより、テナントごとに異なる searchkick インデックスが作成され、クエリ中にうまく機能します。ただし、再インデックスが必要な場合は、すべてのテナントのモデルを再インデックスするように注意してください。

于 2015-04-20T20:28:07.553 に答える
0

2017-01-16 の時点で Searchkick がマルチテナントのサポートを追加したようです。https://github.com/ankane/searchkick#multi-tenancyで確認してください。

于 2020-02-28T20:32:15.810 に答える