はじめに
Solr にはコレクションのコロケーションの機能があります。
この機能はコレクションを跨いだJOINのために必要なものです。
コレクション作成時の指定
コレクション作成APIでwithCollectionパラメータを指定できます。
たとえば以下のリクエストでコレクションc1と同じ場所にコレクションc2を作成します。
/admin/collections?action=CREATE&name=c2&numShards=1&replicationFactor=2&withCollection=c1
ここでいう「同じ場所に」というのは、c1のレプリカが存在するいずれかのSolrノードと同じノード上に、という意味です。
既存のコレクションのコロケーション
コレクション変更APIもwithCollectionパラメータをサポートします。
たとえば以下のようなリクエストです。
/admin/collections?action=MODIFYCOLLECTION&collection=c3&withCollection=c1
ただし、この変更は自動的にはクラスタに反映されません。
多数のレプリカを直ちに移動させ始めるとシステムが不安定になる恐れがあるからです。
このリクエスト実行後に手動でどのようにクラスタを変更させるべきかを知るために、Solr Admin UI の Suggestion ページを利用できます。
コロケーション指定されたコレクションの削除
コロケーションのリンク付けをされたコレクションを削除する場合、先にコレクション変更APIでwithCollection属性を解除しておく必要があります。
/admin/collections?action=MODIFYCOLLECTION&collection=c2&withCollection=
注意事項
- 1つのコレクションに対してwithCollectionでコロケーション指定できるコレクションは1つだけです。ただしwithCollectionによるリンクを繋げることで任意の数のコレクションをコロケーションさせることができます。
- withCollection 指定するコレクションが持つシャードは1つだけで、かつその名前は shard1 でなければなりません。