この問題の解決策の 1 つは、コレクションを作成するときに「暗黙のルーター」を使用することです。
たとえば、アプリケーションのすべての「監査証跡」データを Solr にインデックス化する必要があるとします。新しいデータは毎日追加されます。おそらく、年ごとにシャードしたいと思うかもしれません。
コレクションの初期設定中に、次のようなことを行うことができます。
admin/collections?
action=CREATE&
name=AuditTrailIndex&
router.name=implicit&
shards=2010,2011,2012,2013,2014&
router.field=year
上記のコマンド: a) 5 つのシャードを作成します - 現在および過去 4 年間の 2010,2011,2012,2013,2014 にそれぞれ 1 つ b) 「年」フィールドの値に基づいて正しいシャードにデータをルーティングします (次のように指定されます)。 router.field)
2014 年 12 月には、CREATESHARD API (コレクション API の一部) を使用して、2015 年の準備として新しいシャードを追加できます。次のようにします。
/admin/collections?
action=CREATESHARD&
shard=2015&
collection=AuditTrailIndex
上記のコマンドは、同じコレクションに新しいシャードを作成します。
2015 年になると、データの「年」フィールドに 2015 年が正しく設定されていると仮定すると、すべてのデータが「2015」シャードに自動的にインデックス付けされます。
2015 年に、(データ保持要件に基づいて) 2010 シャードが必要ないと思われる場合は、いつでも DELETESHARD API を使用してそうすることができます。
/admin/collections?
action=DELETESHARD&
shard=2015&
collection=AuditTrailIndex
PSこのソリューションは、コレクションの作成時に「暗黙のルーター」を使用した場合にのみ機能します。デフォルトの「compositeId ルーター」、つまり numshards パラメータで作成されたコレクションを使用する場合は機能しません。
この機能はまさにゲーム チェンジャーです。ビジネスの増大する需要に基づいてシャードを動的に追加できます。