2

コレクションを作成するときに次のクエリを使用して、collection10.

/solr/admin/collections?action=CREATE&name=collection10&numShards=2&replicationFactor=2

しかし、私の要件は、最初の 2 つのシャードで 10000 個のドキュメントのインデックスが作成された後、3 番目のシャードを動的に追加する必要があるということです。

コレクションを開始し、既存のシャードでインデックスを作成した後、シャードを動的に追加することはできますか? 可能であれば、コレクションを開始した後にシャードを動的に追加する方法を意味しますか?

また、コレクションを開始したらレプリカを動的に追加することは可能ですかreplicationFactor=2。することは可能ですか?もしそうなら、どうやってそれを行うのですか?

4

3 に答える 3

9

この問題の解決策の 1 つは、コレクションを作成するときに「暗黙のルーター」を使用することです。

Solr は、"暗黙のルーター" 構成 (CREATE COLLECTION API) を介して (いつでも) インデックスに新しいシャードを追加 (または既存のシャードを削除) する機能をサポートしています。

たとえば、アプリケーションのすべての「監査証跡」データを 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 パラメータで作成されたコレクションを使用する場合は機能しません。

この機能はまさにゲームチェンジャーです。ビジネスの増大する需要に基づいてシャードを動的に追加できます。

この機能は Elastic Search で利用できますか? そうでない場合は、間に合うと確信しています。

于 2014-02-22T16:29:01.297 に答える