コレクション管理コマンド
コレクションは、単一の Solr 構成ファイル (solrconfig.xml
) と単一のインデックススキーマを使用する単一の論理インデックスです。
このセクションのすべての例は、"techproducts" Solr の例を実行していることを前提としています。
bin/solr -c -e techproducts
CREATE: コレクションの作成
CREATE アクションは、新しいデータコレクションを作成するために使用されます。
V1 API
https://127.0.0.1:8983/solr/admin/collections?action=CREATE&name=techproducts_v2&collection.configName=techproducts&numShards=1
V2 API
v2 API では、create
コマンドは、必要なパラメータを含む JSON データの一部として提供されます。
curl -X POST https://127.0.0.1:8983/api/collections -H 'Content-Type: application/json' -d '
{
"name": "techproducts_v2",
"config": "techproducts",
"numShards": 1
}
'
CREATE パラメータ
CREATE アクションでは、次のパラメータを使用できます。
name
-
必須
デフォルト: なし
作成するコレクションの名前。
router.name
-
オプション
デフォルト:
compositeId
使用するルーター名。ルーターは、ドキュメントがシャード間でどのように分散されるかを定義します。可能な値は
implicit
またはcompositeId
です。implicit
ルーターは、ドキュメントを異なるシャードに自動的にルーティングしません。インデックス作成リクエストで(または各ドキュメント内で)示すシャードが、それらのドキュメントの宛先として使用されます。compositeId
ルーターは、uniqueKey フィールドの値をハッシュし、そのハッシュをコレクションのクラスターステートで検索して、ドキュメントを受信するシャードを決定します。さらに、手動でルーティングを指示することもできます。implicit
ルーターを使用する場合、shards
パラメーターは必須です。compositeId
ルーターを使用する場合、numShards
パラメーターは必須です。詳細については、「ドキュメントルーティング」のセクションも参照してください。
numShards
-
オプション
デフォルト: なし
コレクションの一部として作成するシャードの数。これは、
router.name
がcompositeId
の場合に必須のパラメーターです。 shards
(v1)、shardNames
(v2)-
オプション
デフォルト: なし
このコレクションを作成するときに使用するシャード名。これは、
router.name
がimplicit
の場合に必須のパラメーターです。v1 リクエストの場合、これらはコンマ区切りの単一のクエリパラメータとして提供されます。例:shard-x,shard-y,shard-z
。 v2 リクエストの場合、シャード名は、リクエストボディに値のリストとして提供されます。例:["shard-x", "shard-y", "shard-z"]
replicationFactor
-
オプション
デフォルト:
1
各シャードに対して作成するレプリカの数。
これにより、NRT タイプのレプリカが作成されます。別のタイプのレプリカが必要な場合は、以下の
tlogReplicas
およびpullReplicas
パラメータを参照してください。レプリカタイプに関する詳細については、「レプリカのタイプ」のセクションを参照してください。 nrtReplicas
-
オプション
デフォルト: なし
このコレクションのために作成する NRT (ニアリアルタイム) レプリカの数。このタイプのレプリカは、トランザクションログを保持し、ローカルでインデックスを更新します。すべてのレプリカをこのタイプにしたい場合は、代わりに
replicationFactor
を使用できます。 tlogReplicas
-
オプション
デフォルト: なし
このコレクションのために作成する TLOG レプリカの数。このタイプのレプリカは、トランザクションログを保持しますが、リーダーからのレプリケーションによってのみインデックスを更新します。レプリカタイプに関する詳細については、「レプリカのタイプ」セクションを参照してください。
pullReplicas
-
オプション
デフォルト: なし
このコレクションのために作成する PULL レプリカの数。このタイプのレプリカは、トランザクションログを保持せず、リーダーからのレプリケーションによってのみインデックスを更新します。このタイプはリーダーになる資格がなく、コレクション内の唯一のレプリカタイプにすべきではありません。レプリカタイプに関する詳細については、「レプリカのタイプ」セクションを参照してください。
createNodeSet
(v1)、nodeSet
(v2)-
オプション
デフォルト: なし
新しいコレクションを分散させるノードを定義できます。v1 リクエストの場合、ノード名は
localhost:8983_solr,localhost:8984_solr,localhost:8985_solr
のように、コンマ区切りの単一リストとして提供されます。v2 リクエストの場合、ノード名は["localhost:8983_solr", "localhost:7574_solr"]
のように、個別の値のリストとして提供されます。指定しない場合、CREATE 操作は、クラスタ内のすべてのライブノードをノードセットとして使用します。
あるいは、v1 リクエストでは、特別な値
EMPTY
を使用して、新しいコレクション内に初期的にシャードレプリカを作成せず、後で必要なときに ADDREPLICA 操作を使用してシャードレプリカを追加できます。v2 リクエストでは、createReplicas
ブールパラメーターを使用して、この同じ機能を使用できます。 createReplicas
(v2)-
オプション
デフォルト: true
コレクション作成操作の一部として、Solr が各シャードのレプリカを作成するかどうかを制御します。(レプリカは、ADDREPLICA 操作を使用して、後でいつでも作成できます。)
v2 リクエストでのみ利用可能です。v1 リクエストでレプリカ作成を延期したい場合は、
createNodeSet
パラメーターにEMPTY
フラグ値を指定できます。 createNodeSet.shuffle
(v1)、shuffleNodes
(v2)-
オプション
デフォルト:
true
このコレクション用に作成されたシャードレプリカが、
createNodeSet
で指定されたノードに順番に割り当てられるか、または個々のレプリカを作成する前にノードのリストをシャッフルするかどうかを制御します。false
値にすると、コレクション作成の結果が予測可能になり、個々のシャードレプリカの場所をより正確に制御できますが、true
にすると、レプリカがノード全体に均等に分散されるようにするのに適しています。このパラメーターは、
createNodeSet
も指定されていない場合は無視されます。 collection.configName
(v1)、config
(v2)-
オプション
デフォルト: なし
このコレクションに使用する構成の名前(ZooKeeper に既に保存されている必要があります)を定義します。
指定しない場合、Solr は
_default
configset の構成を使用して、<collectionName>.AUTOCREATED
という名前の新しい(および変更可能な)configset を作成し、新しいコレクションに使用します。このようなコレクションが削除されると、自動作成された configset は、他のコレクションで使用されていない場合にデフォルトで削除されます。 router.field
(v1)、router
(v2)-
オプション
デフォルト: なし
このパラメーターが指定されている場合、ルーターは
uniqueKey
フィールドを調べる代わりに、入力ドキュメント内のフィールドの値を調べてハッシュを計算し、シャードを識別します。指定されたフィールドがドキュメントで null の場合、ドキュメントは拒否されます。リアルタイム取得またはドキュメント ID による取得では、分散検索を回避するために、パラメーター
_route_
(またはshard.keys
) も必要になることに注意してください。 perReplicaState
-
オプション
デフォルト:
false
true
の場合、個々のレプリカの状態は、state.json
の個々の子として保持されます。 property.name=value
-
オプション
デフォルト: なし
コアプロパティ name を value に設定します。サポートされているプロパティと値の詳細については、「コアディスカバリ」セクションを参照してください。これらのプロパティは、後でコレクションにレプリカを追加するときに作成されるすべての新しいコアにも適用されます。
各 core.properties ファイルのエントリは、Solr が正しく機能するために不可欠です。エントリをオーバーライドすると、使用できないコレクションになる可能性があります。
property.name=value
を指定してこれらのエントリを変更することは、専門家レベルのオプションであり、結果を十分に理解している場合にのみ使用してください。 waitForFinalState
-
オプション
デフォルト: なし
true
の場合、影響を受けるすべてのレプリカがアクティブになった場合にのみ、リクエストが完了します。デフォルトはfalse
であり、これは、API が単一のアクションのステータスを返すことを意味し、これは新しいレプリカがオンラインでアクティブになる前である可能性があります。 alias
-
オプション
デフォルト: なし
コレクションが作成されるとき、追加でこのコレクションを指すエイリアスを作成できます。このパラメーターを使用すると、このエイリアスの名前を指定できるため、この操作を CREATEALIAS と効果的に組み合わせることができます。
async
-
オプション
デフォルト: なし
このアクションを追跡するためのリクエスト ID。これは、非同期で処理されます。
コレクションは最初に読み書きモードで作成されますが、MODIFYCOLLECTION アクションを使用して readOnly
モードにすることができます。
RELOAD: コレクションのリロード
RELOAD アクションは、ZooKeeper で構成ファイル(新しい solrconfig.xml
のアップロードなど)を変更した場合に使用されます。Solr は、security.json
など、ZooKeeper で監視されている特定のファイルが変更されると、コレクションを自動的にリロードします。ただし、新しいスキーマのアップロードなど、configset 内のファイルに対する変更については、RELOAD を手動でトリガーする必要があります。
V1 API
https://127.0.0.1:8983/solr/admin/collections?action=RELOAD&name=techproducts_v2
V2 API
v2 API では、reload
コマンドは URL パスの一部として提供されます。オプションの async
パラメーターが省略されている場合、リクエストボディはオプションです。
curl -X POST https://127.0.0.1:8983/api/collections/techproducts_v2/reload -H 'Content-Type: application/json' -d '
{
"async": "someAsyncId"
}
RELOAD パラメーター
name
-
オプション
デフォルト: なし
リロードするコレクションの名前。このパラメーターは必須です。これは v1 リクエストのクエリパラメーターとして、v2 リクエストの URL パスに表示されます。
async
-
オプション
デフォルト: なし
このアクションを追跡するためのリクエスト ID。これは、非同期で処理されます。
MODIFYCOLLECTION: コレクションの属性の変更
一度に複数の属性を編集できます。これらの値を変更すると、ZooKeeper 上の znode のみが更新され、コレクションのトポロジは変更されません。たとえば、replicationFactor
を増やすと、コレクションに自動的にレプリカが追加されることはありませんが、より多くの ADDREPLICA コマンドが成功するようになります。
属性は、空の値を渡すことで削除できます。たとえば、yet_another_attribute_name=
(値なし)は、コレクションから yet_another_attribute_name
パラメーターを削除します。
V1 API
https://127.0.0.1:8983/solr/admin/collections?action=MODIFYCOLLECTION&collection=techproducts_v2&<attribute-name>=<attribute-value>&<another-attribute-name>=<another-value>&<yet_another_attribute_name>=
https://127.0.0.1:8983/solr/admin/collections?action=modifycollection&collection=techproducts_v2&replicationFactor=2
V2 API
v2 API では、modify
コマンドは、必要なパラメーターを含む JSON データの一部として提供されます。
curl -X POST https://127.0.0.1:8983/api/collections/techproducts_v2 -H 'Content-Type: application/json' -d '
{
"modify": {
"replicationFactor": 2
}
}
'
MODIFYCOLLECTION パラメーター
collection
-
必須
デフォルト: なし
変更するコレクションの名前。
attribute=value
-
必須
デフォルト: なし
属性名と属性値のキーと値のペア。
少なくとも 1 つの
attribute
パラメーターが必要です。変更できる属性は次のとおりです。
-
replicationFactor
-
collection.configName
-
readOnly
-
property.
プレフィックスを使用するその他のカスタムプロパティこれらの属性の詳細については、上記の「CREATE アクション」セクションを参照してください。
-
async
-
オプション
デフォルト: なし
このアクションを追跡するためのリクエスト ID。これは、非同期で処理されます。
読み取り専用モード
readOnly
属性を true
に設定すると、コレクションは読み取り専用モードになり、インデックス更新リクエストはすべて拒否されます。このモードでも、他のコレクションレベルのアクション (たとえば、レプリカの追加/削除/移動) は引き続き利用できます。
(デフォルトの)読み書きから読み取り専用モードへの移行は、次の手順で構成されます。
-
readOnly
フラグがコレクションの状態に変更され、 -
新しい更新リクエストはすべて 403 FORBIDDEN エラーコードで拒否されます (進行中の長時間実行リクエストも中止されます)。
-
進行中の更新をフラッシュしてコミットするために、強制コミットが実行されます。
バックグラウンドで主要なセグメントのマージが実行されている場合は、これに時間がかかる可能性があります。 -
コレクションの RELOAD アクションが実行されます。
readOnly
プロパティを削除するか、false に設定すると、更新の処理が有効になり、コレクションがリロードされます。
LIST: コレクションの一覧表示
クラスタ内のコレクションの名前を取得します。
V1 API
https://127.0.0.1:8983/solr/admin/collections?action=LIST
V2 API
v2 API では、list
コマンドは、必要なパラメーターを含む JSON データの一部として提供されます。
curl -X GET https://127.0.0.1:8983/api/collections
出力
{
"responseHeader":{
"status":0,
"QTime":2011},
"collections":["collection1",
"example1",
"example2"]}
RENAME: コレクションの名前変更
コレクションの名前を変更すると、基になるコレクションを指す標準エイリアスが設定されるため、クエリ、インデックス、および管理操作で、同じ(変更されていない)コレクションを新しい名前を使用して参照できるようになります。
このコマンドは、実際には基になる Solr コレクションの名前を変更しません。新しい名前を使用して新しい一対一のエイリアスを設定するか、既存のエイリアスの名前を変更して新しい名前を使用するようにしますが、引き続き同じ基になる Solr コレクションを参照します。ただし、ユーザーの観点から見ると、コレクションは新しい名前を使用してアクセスできるようになり、新しい名前は他のエイリアスでも参照できるようになります。
次の制限が適用されます。
-
既存の名前は、SolrCloud コレクションまたは単一のコレクションを参照する標準エイリアスのいずれかである必要があります。複数のコレクションを参照するエイリアスはサポートされていません。
-
既存の名前は、ルーテッドエイリアスであってはなりません。
-
ターゲット名は、既存のエイリアスであってはなりません。
V1 API
https://127.0.0.1:8983/solr/admin/collections?action=RENAME&name=techproducts_v2&target=newName
V2 API
curl -X POST https://127.0.0.1:8983/api/collections/techproducts/rename -H 'Content-Type: application/json' -d '
{
"to": "newName"
}
'
RENAME コマンドパラメーター
name
-
必須
デフォルト: なし
既存の SolrCloud コレクションの名前、または正確に 1 つのコレクションを参照し、ルーテッドエイリアスではないエイリアス。
target
(v1),to
(v2)-
必須
デフォルト: なし
コレクションのターゲット名。これは、基になる SolrCloud コレクションを参照する新しいエイリアスになります。コレクションの元の名前(またはエイリアス)は、既存のエイリアスでも置き換えられ、新しい名前を参照するようになります。ターゲット名は、既存のエイリアスであってはなりません。
RENAME を使用した例
collection1
と collection2
という名前の 2 つの実際の SolrCloud コレクションがあり、次のエイリアスが既に存在すると仮定します。
-
col1 ⇒ collection1
: これはcollection1
に解決されます。 -
col2 ⇒ collection2
: これはcollection2
に解決されます。 -
simpleAlias ⇒ col1
: これはcollection1
に解決されます。 -
compoundAlias ⇒ col1,col2
: これはcollection1,collection2
に解決されます。
col1
を foo
に RENAME すると、エイリアスは次のようになります。
-
foo ⇒ collection1
: これはcollection1
に解決されます。 -
col2 ⇒ collection2
: これはcollection2
に解決されます。 -
simpleAlias ⇒ foo
: これはcollection1
に解決されます。 -
compoundAlias ⇒ foo,col2
: これはcollection1,collection2
に解決されます。
次に、collection1
(実際のコレクション名)の名前を collection2
(これも実際のコレクション名)に変更すると、次のエイリアスが存在することになります。
-
foo ⇒ collection2
: これはcollection2
に解決されます。 -
col2 ⇒ collection2
: これはcollection2
に解決されます。 -
simpleAlias ⇒ foo
: これはcollection2
に解決されます。 -
compoundAlias ⇒ foo,col2
: これはcollection2,collection2
に解決されるため、単にcollection2
に縮小されます。 -
collection1
⇒collection2
: この新しく作成されたエイリアスは、collection1
を通常のクエリおよび更新コマンドから効果的に隠蔽し、現在はcollection2
に向けられます。
DELETE: コレクションの削除
DELETE アクションは、コレクションを削除するために使用されます。
V1 API
https://127.0.0.1:8983/solr/admin/collections?action=DELETE&name=techproducts_v2
V2 API
curl -X DELETE https://127.0.0.1:8983/api/collections/techproducts_v2
DELETE を非同期で実行するには、async
パラメータを追加します。
curl -X DELETE https://127.0.0.1:8983/api/collections/techproducts_v2?async=aaaa
DELETE パラメータ
name
-
必須
デフォルト: なし
削除するコレクションの名前。
async
-
オプション
デフォルト: なし
このアクションを追跡するためのリクエスト ID。これは、非同期で処理されます。
DELETE レスポンス
レスポンスには、リクエストのステータスと削除されたコアが含まれます。ステータスが「success」以外の場合、リクエストが失敗した理由を説明するエラーメッセージが表示されます。
出力
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">603</int>
</lst>
<lst name="success">
<lst name="10.0.1.6:8983_solr">
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">19</int>
</lst>
</lst>
<lst name="10.0.1.4:8983_solr">
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">67</int>
</lst>
</lst>
</lst>
</response>
COLLECTIONPROP: コレクションプロパティ
コレクションプロパティを追加、編集、または削除します。
V1 API
https://127.0.0.1:8983/solr/admin/collections?action=COLLECTIONPROP&name=techproducts_v2&propertyName=propertyName&propertyValue=propertyValue
V2 API
コレクションプロパティを作成または更新するには
curl -X PUT https://127.0.0.1:8983/api/collections/techproducts_v2/properties/foo -H 'Content-Type: application/json' -d '
{
"value": "bar"
}
'
既存のコレクションプロパティを削除するには
curl -X DELETE https://127.0.0.1:8983/api/collections/techproducts_v2/properties/foo
MIGRATE: ドキュメントを別のコレクションに移行する
MIGRATE コマンドは、指定されたルーティングキーを持つすべてのドキュメントを別のコレクションに移行するために使用されます。ソースコレクションは、そのまま同じデータを保持し続けますが、forward.timeout
パラメータで指定された秒数、ターゲットコレクションへの書き込みリクエストをリダイレクトし始めます。MIGRATE アクションが完了したら、ユーザーが読み書きのためにターゲットコレクションに切り替える必要があります。
V1 API
https://127.0.0.1:8983/solr/admin/collections?action=MIGRATE&collection=techproducts_v2&split.key=key1!&target.collection=postMigrationCollection&forward.timeout=60
V2 API
curl -X POST https://127.0.0.1:8983/api/collections/techproducts_v2 -H 'Content-Type: application/json' -d '
{
"migrate-docs": {
"target": "postMigrationCollection",
"splitKey": "key1!"
}
}
'
split.key
パラメータで指定されたルーティングキーは、ソースコレクションとターゲットコレクションの両方で複数のシャードにまたがる可能性があります。移行は、単一のスレッドでシャードごとに実行されます。このコマンドによって「移行」プロセス中に 1 つ以上のテンポラリコレクションが作成される場合がありますが、最後に自動的にクリーンアップされます。
これは長時間実行される操作であるため、async
パラメータを使用することを強くお勧めします。async
パラメータが指定されていない場合、操作はデフォルトで同期され、呼び出し時に大きな読み取りタイムアウトを維持することが推奨されます。読み取りタイムアウトが大きくても、リクエストはタイムアウトする可能性がありますが、必ずしも操作が失敗したとは限りません。ユーザーは、操作を再度呼び出す前に、ログ、クラスタの状態、ソースコレクション、およびターゲットコレクションを確認する必要があります。
このコマンドは、compositeId ルーターを使用するコレクションでのみ機能します。MIGRATE コマンドが実行されている間、ターゲットコレクションは書き込みを受信してはなりません。そうしないと、一部の書き込みが失われる可能性があります。
MIGRATE API はドキュメントの重複排除を実行しないため、移行されるドキュメントと同じ uniqueKey を持つドキュメントがターゲットコレクションに含まれている場合、ターゲットコレクションには重複ドキュメントが含まれることに注意してください。
MIGRATE パラメータ
collection
-
必須
デフォルト: なし
ドキュメントを分割するソースコレクションの名前。
target.collection
(v1),target
(v2)-
必須
デフォルト: なし
ドキュメントを移行するターゲットコレクションの名前。
split.key
(v1),splitKey
(v2)-
必須
デフォルト: なし
ルーティングキーのプレフィックス。たとえば、ドキュメントの uniqueKey が「a!123」の場合、
split.key=a!
を使用します。 forward.timeout
(v1),forwardTimeout
(v2)-
オプション
デフォルト:
60
秒指定された
split.key
のソースコレクションに対して行われた書き込みリクエストがターゲットシャードに転送されるまでのタイムアウト(秒単位)。 property.name=value
-
オプション
デフォルト: なし
コアプロパティ name を value に設定します。サポートされているプロパティと値の詳細については、コア検出セクションを参照してください。
async
-
オプション
デフォルト: なし
このアクションを追跡するためのリクエスト ID。これは、非同期で処理されます。
REINDEXCOLLECTION: コレクションの再インデックス作成
REINDEXCOLLECTION コマンドは、ソースコレクションからの既存のデータを使用してコレクションを再インデックスします。
V1 API
https://127.0.0.1:8983/solr/admin/collections?action=REINDEXCOLLECTION&name=techproducts_v2
V2 API
現在、V2 相当のものは用意されていません。
再インデックス作成は、損失を伴う可能性がある操作です。格納フィールドとして利用できない既存のインデックス付きデータの一部が失われる可能性があるため、ユーザーは異なるソースとターゲットのコレクション名を最初に使用し、評価が完了するまでソースコレクションを保持することで、潜在的な影響を評価し、このコマンドを慎重に使用する必要があります。 |
ターゲットコレクションは存在してはなりません(また、エイリアスであってはなりません)。ターゲットコレクションの名前がソースコレクションと同じである場合、最初にターゲットコレクションの一意の順次名が生成され、再インデックス作成が完了した後、ソース名から実際に順次名前が付けられたターゲットコレクションを指すエイリアスが作成されます。
再インデックス作成が開始されると、ソースドキュメントがすべて適切に処理されるように、ソースコレクションは読み取り専用モードになります。
オプションのパラメータを使用すると、ターゲットコレクションに対して異なるインデックススキーマ、コレクションの形状(シャード数とレプリカ数)、またはルーティングパラメータを要求できます。
再インデックス作成は、ソースコレクションのレプリカの 1 つで実行されるストリーミング式デーモンとして実行されます。通常、時間がかかる操作であるため、リクエストタイムアウトを回避するために、非同期リクエストとして実行することをお勧めします。特定のソースコレクションに対して、同時に実行できる再インデックス作成操作は 1 つだけです。長時間実行される、エラーが発生した、またはクラッシュした再インデックス作成操作は、abort
オプションを使用して終了させることができます。これにより、部分的な結果も削除されます。
REINDEXCOLLECTION パラメータ
name
-
必須
デフォルト: なし
ソースコレクションの名前。エイリアスを使用できます。
cmd
-
オプション
デフォルト:
start
現在サポートされているコマンドは次のとおりです。
-
start
: まだ実行されていない場合は、処理を開始します。 -
abort
: 既に実行中の再インデックス作成を中止します(または、クラッシュ後の残り状態をクリアします)。また、部分的な結果を削除します。 -
status
: 実行中の再インデックス作成コマンドの詳細なステータスを返します。
-
target
-
オプション
デフォルト: なし
ターゲットコレクション名。指定しない場合、一意の名前が生成され、すべてのドキュメントがコピーされた後、ソースコレクション名から一意の順次名前付きコレクションを指すエイリアスが作成されます。これにより、通常の更新および検索操作の目的で、元のソースコレクションが効果的に「隠蔽」されます。
q
-
オプション
デフォルト:
*:*
再インデックス作成するドキュメントを選択するためのクエリ。
fl
-
オプション
デフォルト:
*
再インデックスするフィールドのリスト。
rows
-
オプション
デフォルト:
100
ドキュメントを転送するためのバッチサイズ。ドキュメントの平均サイズによっては、バッチサイズが大きいとメモリの問題が発生する可能性があります。
configName
collection.configName
-
オプション
デフォルト: <ソースコレクションの名前>
ターゲットコレクションの構成セットの名前。
removeSource
-
オプション
デフォルト:
false
true
の場合、処理が正常に終了した後、ソースコレクションは削除されます。 async
-
オプション
デフォルト: なし
このアクションを追跡するためのオプションのリクエスト ID。非同期で処理されます。
さらに、ターゲットコレクションのレイアウトを決定する多数のオプションパラメータがあります。リクエストで指定されていない場合、それらの値はソースコレクションからコピーされます。現在、次のパラメータがサポートされています(詳細については、CREATE コレクションセクションで説明されています)。numShards
、replicationFactor
、nrtReplicas
、tlogReplicas
、pullReplicas
、shards
、policy
、createNodeSet
、createNodeSet.shuffle
、router.*
。
再インデックス作成プロセスが完了すると、ターゲットコレクションは property.rx: "finished"
を使用してマークされ、ソースコレクションの状態は読み取り/書き込みに変更されます。エラーが発生した場合、コマンドはテンポラリコレクションとターゲットコレクションをすべて削除し、ソースコレクションの読み取り専用フラグの状態もリセットします。
REINDEXCOLLECTION を使用した例
入力
https://127.0.0.1:8983/solr/admin/collections?action=REINDEXCOLLECTION&name=techproducts_v2&numShards=3&configName=conf2&q=id:aa*&fl=id,string_s
このリクエストは、ターゲットコレクションに対して異なるスキーマを指定し、一部のフィールドのみをコピーし、クエリに一致するドキュメントのみを選択し、明示的に 3 つのシャードを指定してコレクションを再形成する可能性もあります。パラメータでターゲットコレクションが指定されていないため、一意の名前(例: .rx_techproducts_v2_2
)を持つコレクションが作成され、成功すると、techproducts_v2
から .rx_techproducts_v2_2
を指すエイリアスが作成され、インデックス作成と検索のためにソースコレクションが効果的に置き換えられます。ソースコレクションは小さいと想定されるため、同期リクエストが作成されました。
出力
{
"responseHeader":{
"status":0,
"QTime":10757},
"reindexStatus":{
"phase":"done",
"inputDocs":13416,
"processedDocs":376,
"actualSourceCollection":".rx_techproducts_v2_1",
"state":"finished",
"actualTargetCollection":".rx_techproducts_v2_2",
"checkpointCollection":".rx_ck_techproducts_v2"
}
}
その結果、新しいコレクション .rx_techproducts_v2_2
が作成され、選択されたドキュメントが 3 つのシャードに再インデックスされ、techproducts_v2
からこのコレクションを指すエイリアスが作成されました。ステータスは、ソースコレクションが .rx_techproducts_v2_1
のエイリアスであることも示しており、これは以前の再インデックス作成の結果である可能性が高いことを示しています。
COLSTATUS: コレクションのインデックスの詳細なステータス
COLSTATUS コマンドは、セグメントとフィールドデータに関する低レベルのインデックス情報など、コレクションステータスの詳細な説明を提供します。以下のすべてのパラメータをサポートする同等の V2 API はありません。
V1 API
https://127.0.0.1:8983/solr/admin/collections?action=COLSTATUS&collection=techproducts_v2&coreInfo=true&segments=true&fieldInfo=true&sizeInfo=true
V2 API
最も近い V2 API はこれですが、V1 と同等のすべての機能をサポートしていません。
curl -X GET https://127.0.0.1:8983/api/collections/techproducts_v2
このコマンドは、Lucene インデックスフィールドタイプが現在の Solr コレクションスキーマに準拠しているかどうかもチェックし、非準拠のフィールドの名前、つまり現在のスキーマで宣言された対応する Solr フィールドタイプと互換性がない(または異なる)フィールドタイプを持つ Lucene フィールドを示します。このような非互換性は、互換性のないスキーマ変更の結果、または異なるメジャー Solr リリースへのデータの移行後に発生する可能性があります。
COLSTATUS パラメータ
collection
-
オプション
デフォルト: なし
コレクション名。存在しない場合は、すべてのコレクションを意味します。
coreInfo
-
オプション
デフォルト:
false
true
の場合、シャードリーダーの SolrCore に関する追加情報が提供されます。 segments
-
オプション
デフォルト:
false
true
の場合、セグメント情報が提供されます。 fieldInfo
-
オプション
デフォルト:
false
true
の場合、詳細なLuceneフィールド情報と、対応するSolrスキーマタイプが提供されます。 sizeInfo
-
オプション
デフォルト:
false
true
の場合、インデックスファイルのサイズとRAM使用量に関する追加情報が提供されます。
インデックスサイズ分析ツール
COLSTATUS
コマンドは、生のインデックスデータの構成を分析および推定するためのツールも提供します。このツールは、分析対象のコレクションのすべてのシャードリーダーに大きなIO負荷を生成するため、注意して使用する必要があることに注意してください。サンプリングしきい値とサンプリングパーセントのパラメーターを調整することで、この負荷をある程度軽減できます。
このツールによって生成されるサイズ推定値は概算に過ぎず、圧縮されていないインデックスデータの集計サイズを表します。実際には、Lucene(およびSolr)は常にデータを圧縮形式で保存するため、これらの値は発生しません。それでも、これらの値は、インデックス内のスペースの大部分を占めているもの、および各タイプのデータと各フィールドの相対サイズを理解するのに役立ちます。
以下のセクションでは、「サイズ」という場合は常に、圧縮されていない(生の)データの推定集計サイズを意味します。
以下のパラメーターはこのツールに固有のものです。
rawSize
-
オプション
デフォルト:
false
true
の場合、生のインデックスデータ分析ツールを実行します(以下の他のブールオプションのいずれかがtrueの場合、このオプションが暗示されます)。コマンドのレスポンスには、フィールドごとおよびデータタイプごとのデータサイズの推定内訳を示すセクションが含まれます。 rawSizeSummary
-
オプション
デフォルト:
false
true
の場合、フィールドごとおよびタイプごとのデータサイズのより詳細な内訳も含まれます。 rawSizeDetails
-
オプション
デフォルト:
false
true
の場合、フィールドごとおよびタイプごとのアイテムの統計分布、およびフィールドごとの上位20個の最大アイテムを含む、詳細な情報を提供します。 rawSizeSamplingPercent
-
オプション
デフォルト:
5.0
インデックスが特定のしきい値(シャードあたり10万ドキュメント)より大きい場合、IO負荷を軽減するために、実際にはデータの一部のみが取得および分析され、最終結果が外挿されます。
値は
0
より大きく、100.0
以下である必要があります。非常に小さい値(0.0
から1.0
の間)は、重大な推定誤差を引き起こす可能性があります。また、サンプリングされるドキュメント数が10未満になる値は、例外で拒否されます。
このコマンドのレスポンスには常に2つのセクションが含まれています。
-
fieldsBySize
: フィールド名がキーであり、値がフィールドに属する生の(圧縮されていない)データの推定サイズであるマップ。マップはサイズでソートされているため、どのフィールドが最もスペースを占めているかを簡単に確認できます。 -
typesBySize
: データタイプがキーであり、値が特定のタイプの生の(圧縮されていない)データの推定サイズであるマップ。このマップもサイズでソートされています。
上記のパラメーターで追加されるオプションのセクションは以下を含みます。
-
データタイプごとの各フィールドのデータサイズの内訳を含む
summary
セクション。 -
データタイプごとの各フィールド内のサイズ分布の詳細な統計的概要を含む
details
セクション。このセクションには、各フィールドからのサイズによるtopN
値も表示されます。
レスポンスに表示されるデータタイプは、次のグループにおおまかに分類できます。
-
storedFields
- 格納されたフィールド内の生の圧縮されていないデータを表します。たとえば、UTF-8文字列の場合、これは文字列のUTF-8表現でのバイト数の集計合計を表し、long型の数値の場合、これは値あたり8バイトなどです。 -
terms_terms
- 用語辞書の集計サイズを表します。このデータのサイズは、一意の用語の数と長さによって影響を受け、これはフィールドサイズと分析チェーンに依存します。 -
terms_postings
- 存在する場合、すべての用語位置とオフセット情報の集計サイズを表します。フレーズクエリなどの位置ベースの検索が必要ない場合、この情報が存在しない場合があります。 -
terms_payloads
- 存在する場合、すべての用語ごとのペイロードデータの集計サイズを表します。 -
norms
- フィールドノルム情報の集計サイズを表します。この情報は、フィールドにスキーマ内のomitNorms
フラグがある場合(フィールド長による重み付けやスコアリングが必要ないフィールドでは一般的です)は省略される場合があります。 -
termVectors
- 用語ベクトルの集計サイズを表します。 -
docValues_*
- タイプ(例:docValues_numeric
、docValues_binary
など)によるdoc値の集計サイズを表します。 -
points
- ポイント値の集計サイズを表します。
COLSTATUSの使用例
入力
https://127.0.0.1:8983/solr/admin/collections?action=COLSTATUS&collection=gettingstarted&fieldInfo=true&sizeInfo=true
出力
{
"responseHeader": {
"status": 0,
"QTime": 50
},
"gettingstarted": {
"znodeVersion": 16,
"properties": {
"nrtReplicas": "2",
"pullReplicas": "0",
"replicationFactor": "2",
"router": {
"name": "compositeId"
},
"tlogReplicas": "0"
},
"activeShards": 2,
"inactiveShards": 0,
"schemaNonCompliant": [
"(NONE)"
],
"shards": {
"shard1": {
"state": "active",
"range": "80000000-ffffffff",
"replicas": {
"total": 2,
"active": 2,
"down": 0,
"recovering": 0,
"recovery_failed": 0
},
"leader": {
"coreNode": "core_node4",
"core": "gettingstarted_shard1_replica_n1",
"base_url": "http://192.168.0.80:8983/solr",
"node_name": "192.168.0.80:8983_solr",
"state": "active",
"type": "NRT",
"force_set_state": "false",
"leader": "true",
"segInfos": {
"info": {
"minSegmentLuceneVersion": "9.0.0",
"commitLuceneVersion": "9.0.0",
"numSegments": 40,
"segmentsFileName": "segments_w",
"totalMaxDoc": 686953,
"userData": {
"commitCommandVer": "1627350608019193856",
"commitTimeMSec": "1551962478819"
}
},
"fieldInfoLegend": [
"I - Indexed",
"D - DocValues",
"xxx - DocValues type",
"V - TermVector Stored",
"O - Omit Norms",
"F - Omit Term Frequencies & Positions",
"P - Omit Positions",
"H - Store Offsets with Positions",
"p - field has payloads",
"s - field uses soft deletes",
":x:x:x - point data dim : index dim : num bytes"
],
"segments": {
"_i": {
"name": "_i",
"delCount": 738,
"softDelCount": 0,
"hasFieldUpdates": false,
"sizeInBytes": 109398213,
"size": 70958,
"age": "2019-03-07T12:34:24.761Z",
"source": "merge",
"version": "9.0.0",
"createdVersionMajor": 9,
"minVersion": "9.0.0",
"diagnostics": {
"os": "Mac OS X",
"java.vendor": "Oracle Corporation",
"java.version": "1.8.0_191",
"java.vm.version": "25.191-b12",
"lucene.version": "9.0.0",
"mergeMaxNumSegments": "-1",
"os.arch": "x86_64",
"java.runtime.version": "1.8.0_191-b12",
"source": "merge",
"mergeFactor": "10",
"os.version": "10.14.3",
"timestamp": "1551962064761"
},
"attributes": {
"Lucene50StoredFieldsFormat.mode": "BEST_SPEED"
},
"largestFiles": {
"_i.fdt": "42.5 MB",
"_i_Lucene80_0.dvd": "35.3 MB",
"_i_Lucene50_0.pos": "11.1 MB",
"_i_Lucene50_0.doc": "10 MB",
"_i_Lucene50_0.tim": "4.3 MB"
}}}}}}}}}
生のインデックスデータ分析ツールの使用例
入力
https://127.0.0.1:8983/solr/admin/collections?action=COLSTATUS&collection=gettingstarted&rawSize=true&rawSizeSamplingPercent=0.1
出力
{
"responseHeader": {
"status": 0,
"QTime": 26812
},
"gettingstarted": {
"znodeVersion": 33,
"properties": {
"nrtReplicas": "2",
"pullReplicas": "0",
"replicationFactor": "2",
"router": {
"name": "compositeId"
},
"tlogReplicas": "0"
},
"activeShards": 2,
"inactiveShards": 0,
"schemaNonCompliant": [
"(NONE)"
],
"shards": {
"shard1": {
"state": "active",
"range": "80000000-ffffffff",
"replicas": {
"total": 2,
"active": 2,
"down": 0,
"recovering": 0,
"recovery_failed": 0
},
"leader": {
"coreNode": "core_node5",
"core": "gettingstarted_shard1_replica_n2",
"base_url": "http://192.168.0.80:8983/solr",
"node_name": "192.168.0.80:8983_solr",
"state": "active",
"type": "NRT",
"force_set_state": "false",
"leader": "true",
"segInfos": {
"info": {
"minSegmentLuceneVersion": "9.0.0",
"commitLuceneVersion": "9.0.0",
"numSegments": 46,
"segmentsFileName": "segments_4h",
"totalMaxDoc": 3283741,
"userData": {
"commitCommandVer": "1635676266902323200",
"commitTimeMSec": "1559902446318"
}
},
"rawSize": {
"fieldsBySize": {
"revision.text": "7.9 GB",
"revision.text_str": "734.7 MB",
"revision.comment_str": "259.1 MB",
"revision": "239.2 MB",
"revision.sha1": "211.9 MB",
"revision.comment": "201.3 MB",
"title": "114.9 MB",
"revision.contributor": "103.5 MB",
"revision.sha1_str": "96.4 MB",
"revision.id": "75.2 MB",
"ns": "75.2 MB",
"revision.timestamp": "75.2 MB",
"revision.contributor.id": "74.7 MB",
"revision.format": "69 MB",
"id": "65 MB",
"title_str": "26.8 MB",
"revision.model_str": "25.4 MB",
"_version_": "24.9 MB",
"_root_": "24.7 MB",
"revision.contributor.ip_str": "22 MB",
"revision.contributor_str": "21.8 MB",
"revision_str": "15.5 MB",
"revision.contributor.ip": "13.5 MB",
"restrictions_str": "428.7 KB",
"restrictions": "164.2 KB",
"name_str": "84 KB",
"includes_str": "8.8 KB"
},
"typesBySize": {
"storedFields": "7.8 GB",
"docValues_sortedSet": "1.2 GB",
"terms_postings": "788.8 MB",
"terms_terms": "342.2 MB",
"norms": "237 MB",
"docValues_sortedNumeric": "124.3 MB",
"points": "115.7 MB",
"docValues_numeric": "24.9 MB",
"docValues_sorted": "18.5 MB"
}
}
}
}
},
"shard2": {
"state": "active",
"range": "0-7fffffff",
"replicas": {
"total": 2,
"active": 2,
"down": 0,
"recovering": 0,
"recovery_failed": 0
},
"leader": {
"coreNode": "core_node8",
"core": "gettingstarted_shard2_replica_n6",
"base_url": "http://192.168.0.80:8983/solr",
"node_name": "192.168.0.80:8983_solr",
"state": "active",
"type": "NRT",
"force_set_state": "false",
"leader": "true",
"segInfos": {
"info": {
"minSegmentLuceneVersion": "9.0.0",
"commitLuceneVersion": "9.0.0",
"numSegments": 55,
"segmentsFileName": "segments_4d",
"totalMaxDoc": 3284863,
"userData": {
"commitCommandVer": "1635676259742646272",
"commitTimeMSec": "1559902445005"
}
},
"rawSize": {
"fieldsBySize": {
"revision.text": "8.3 GB",
"revision.text_str": "687.5 MB",
"revision": "238.9 MB",
"revision.sha1": "212 MB",
"revision.comment_str": "211.5 MB",
"revision.comment": "201.7 MB",
"title": "115.9 MB",
"revision.contributor": "103.4 MB",
"revision.sha1_str": "96.3 MB",
"ns": "75.2 MB",
"revision.id": "75.2 MB",
"revision.timestamp": "75.2 MB",
"revision.contributor.id": "74.6 MB",
"revision.format": "69 MB",
"id": "67 MB",
"title_str": "29.5 MB",
"_version_": "24.8 MB",
"revision.model_str": "24 MB",
"revision.contributor_str": "21.7 MB",
"revision.contributor.ip_str": "20.9 MB",
"revision_str": "15.5 MB",
"revision.contributor.ip": "13.8 MB",
"restrictions_str": "411.1 KB",
"restrictions": "132.9 KB",
"name_str": "42 KB",
"includes_str": "41 KB"
},
"typesBySize": {
"storedFields": "8.2 GB",
"docValues_sortedSet": "1.1 GB",
"terms_postings": "787.4 MB",
"terms_terms": "337.5 MB",
"norms": "236.6 MB",
"docValues_sortedNumeric": "124.1 MB",
"points": "115.7 MB",
"docValues_numeric": "24.9 MB",
"docValues_sorted": "20.5 MB"
}
}
}
}
}
}
}
}
BACKUP: コレクションのバックアップ
Solrコレクションと関連する構成を「バックアップリポジトリ」にバックアップします。
V1 API
https://127.0.0.1:8983/solr/admin/collections?action=BACKUP&name=techproducts_backup&collection=techproducts&location=file:///path/to/my/shared/drive
V2 API
curl -X POST https://127.0.0.1:8983/api/collections/techproducts/backups/techproducts_backup/versions -H 'Content-Type: application/json' -d '
{
"location": "file:///path/to/my/shared/drive"
}
'
BACKUP APIは、指定されたコレクションのSolrインデックスと構成をバックアップします。BACKUPコマンドは、インデックスに対して各シャードから1つのコピーを取得します。構成については、コレクションに関連付けられていたconfigsetとメタデータをバックアップします。
Solrには、多くのリポジトリのバックアップサポートが付属しています。完全なリストについては、バックアップストレージリポジトリセクションを参照してください。
バックアップデータは、指定されたname
とlocation
に基づいて、指定されたリポジトリのディレクトリに格納されます。各バックアップロケーションは、同じコレクションの複数のバックアップを保持できるため、ユーザーは後で必要に応じてこれらの「バックアップポイント」のいずれかから復元できます。ロケーション内では、バックアップは増分的に実行されるため、以前にアップロードされたインデックスファイルはスキップされ、バックアップリポジトリで重複することはありません。複数のコレクションを同じロケーションにバックアップすることはできません。
以前のバージョンのSolrでは、上記のような増分サポートがない異なるバックアップファイル形式をサポートしていました。Solrは、この古い形式を使用するバックアップから引き続き復元できますが、この形式の新しいバックアップを作成することはお勧めできず、正式に非推奨になっています。詳細については、以下の |
BACKUPパラメーター
collection
-
必須
デフォルト: なし
バックアップするコレクションの名前。v1リクエストの場合はクエリパラメーターとして、v2リクエストの場合はパスセグメントとして提供されます。
name
-
必須
デフォルト: なし
作成されるバックアップの名前。v1リクエストの場合はクエリパラメーターとして、v2リクエストの場合はパスセグメントとして提供されます。これがすでに存在しないことを確認するためにチェックされ、それ以外の場合はエラーメッセージが発生します。
location
-
必須
デフォルト: なし
バックアップコマンドが書き込む共有ドライブ上のロケーション。リポジトリ構成でデフォルトのロケーションが定義されているか、クラスタープロパティとして設定されていない限り、このパラメーターは必須です。
ロケーションパスがマウントされたドライブ上にある場合、バックアップされているコレクションのレプリカをホストしていない場合でも、オーバーシーアとして機能するノードでマウントを使用できるようにする必要があります。任意のノードがいつでもオーバーシーアの役割を担うことができるため、バックアップの失敗を防ぐための最善の方法は、マウントポイントがクラスターのすべてのノードで使用できることを確認することです。
各バックアップロケーションは1つのコレクションのバックアップのみを保持できますが、同じロケーションを同じコレクションの繰り返しバックアップに使用できます。同じコレクションの繰り返しバックアップは増分的に実行されるため、最後のバックアップ以降に変更されていないファイルは、バックアップリポジトリで重複することはありません。
S3バックアップリポジトリを使用している場合は、
location
オプションに関するS3固有の警告をお読みください。 async
-
オプション
デフォルト: なし
このアクションを追跡するためのリクエスト ID。これは、非同期で処理されます。
repository
-
オプション
デフォルト: なし
バックアップに使用するリポジトリの名前。リポジトリが指定されていない場合は、ローカルファイルシステムリポジトリが自動的に使用されます。
maxNumBackupPoints
-
オプション
デフォルト: なし
バックアップロケーションに保持する必要があるバックアップの最大数。現在の数がこの制限を超えている場合、
maxNumBackupPoints
バックアップのみが残るまで、古いバックアップが削除されます。incremental=false
が指定されている場合、このパラメーターは無効です。 backupConfigset
-
オプション
デフォルト:
true
configsetファイルをインデックスバックアップに含めるかどうかを示します。コレクションを復元するには、configsetがZooKeeperに存在するか、バックアップの一部である必要があることに注意してください。Solrの外部の他の手段でconfigsetを復元できる場合にのみ、これを
false
に設定します(つまり、アプリケーションのソースコードで保存されている、ZooKeeperバックアップの一部であるなど)。 property.<propertyName>
(V1)、extraProperties
(V2)
オプション |
デフォルト: なし |
+ バックアップに関連するカスタム情報用の追加のキー/値ペアを格納できます。v2では、値はキーと値のペアのマップです。
incremental
-
オプション
デフォルト:
true
ユーザーが増分(
incremental=true
)バックアップまたは「フル」(incremental=false
)バックアップを作成するかどうかを選択できるブールパラメーター。指定しない場合、バックアップはデフォルトで増分的に実行されます。既知のすべての状況で増分バックアップが推奨されており、「フル」(つまり、増分でない)バックアップは非推奨になっているため、このパラメーターは十分に検討した後でのみ使用する必要があります。 indexBackup
(v1)、backupStrategy
(v2)-
オプション
デフォルト: "copy-files"
ユーザーがいくつかの異なるバックアップ「戦略」のいずれかを指定できる文字列パラメーター。有効なオプションは、
copy-files
(コレクションconfigsetとインデックスデータの両方をバックアップします)とnone
(コレクションconfigsetのみをバックアップします)です。 commitName
(v1)、snapshotName
(v2)-
オプション
デフォルト: なし
バックアップを作成するコレクションの「スナップショット」の名前。提供されない場合、Solrは、(以前にスナップショットされた状態ではなく)現在のコレクション状態からバックアップを作成します。
増分バックアップレスポンス
{
"response": {
"collection": "techproducts",
"numShards": 2,
"backupId": 0,
"indexVersion": "9.0.0",
"startTime": "2022-02-11T17:20:44.157305500Z",
"indexFileCount": 22,
"uploadedIndexFileCount": 22,
"indexSizeMB": 0.007,
"uploadedIndexFileMB": 0.007,
"shardBackupIds": [
"md_shard2_0",
"md_shard1_0"
],
"endTime": "2022-02-11T17:20:45.245534400Z"
}
}
LISTBACKUP: バックアップのリスト
指定されたリポジトリロケーションに格納されている各バックアップに関する情報を一覧表示します。各バックアップについて、バックアップが作成されたタイムスタンプ、インデックスの作成に使用されたLuceneバージョン、ファイル数と合計ファイルサイズの両方でのバックアップサイズを含む基本的なメタデータが返されます。
以前のバージョンのSolrでは、同じロケーションに複数のバックアップのストレージをサポートしていない異なるバックアップファイル構造をサポートしていました。Solrは、この古い形式で格納されたバックアップを引き続き復元できますが、非推奨となっており、以降のバージョンのSolrでは削除されます。LISTBACKUP APIは非推奨の形式をサポートしておらず、古いバックアップを保持しているロケーションでこのAPIを使用しようとすると、エラーメッセージが表示されます。 |
Solrが内部的にバックアップを表すために使用するファイル構造は8.9.0で変更されました。この形式の変更前に作成されたバックアップは引き続き復元できますが、LISTBACKUP
およびDELETEBACKUP
APIコマンドはこの新しい形式でのみ有効です。古いバックアップを保持しているロケーションでそれらを使用しようとすると、エラーメッセージが表示されます。
LISTBACKUPパラメーター
name
-
必須
デフォルト: なし
一覧表示するバックアップの名前。バックアップ名は通常コレクション名に対応しますが、必須ではありません。
location
-
必須
デフォルト: なし
バックアップを一覧表示するリポジトリロケーション。リポジトリ構成でデフォルトのロケーションが定義されているか、クラスタープロパティとして設定されていない限り、このパラメーターは必須です。
ロケーションパスがマウントされたドライブ上にある場合、バックアップされているコレクションのレプリカをホストしていない場合でも、オーバーシーアとして機能するノードでマウントを使用できるようにする必要があります。任意のノードがいつでもオーバーシーアの役割を担うことができるため、バックアップの失敗を防ぐための最善の方法は、マウントポイントがクラスターのすべてのノードで使用できることを確認することです。
これは、バックアップを作成するときに
location
オプションとして指定された値と同じである必要があります。 repository
-
オプション
デフォルト: なし
バックアップ情報へのアクセスに使用するリポジトリの名前。リポジトリが指定されていない場合は、ローカルファイルシステムリポジトリが自動的に使用されます。
async
-
オプション
デフォルト: なし
このアクションを追跡するためのリクエスト ID。これは、非同期で処理されます。
LISTBACKUPの例
入力
V1 API
https://127.0.0.1:8983/solr/admin/collections?action=LISTBACKUP&name=myBackupName&location=/path/to/my/shared/drive
V2 API
curl -X GET "https://127.0.0.1:8983/api/backups/backupName/versions?location=/path/to/my/shared/drive"
出力
{
"responseHeader":{
"status":0,
"QTime":4},
"collection":"books",
"backups":[{
"indexFileCount":0,
"indexSizeMB":0.0,
"shardBackupIds":{
"shard2":"md_shard2_0.json",
"shard1":"md_shard1_0.json"},
"collection.configName":"books",
"backupId":0,
"collectionAlias":"books",
"startTime":"2021-02-09T03:19:52.085653Z",
"indexVersion":"9.0.0"},
{
"indexFileCount":0,
"indexSizeMB":0.0,
"shardBackupIds":{
"shard2":"md_shard2_1.json",
"shard1":"md_shard1_1.json"},
"collection.configName":"books",
"backupId":1,
"collectionAlias":"books",
"startTime":"2021-02-09T03:19:52.268804Z",
"indexVersion":"9.0.0"}]}
RESTORE: コレクションの復元
指定されたコレクションにSolrインデックスと関連する構成を復元します。
V1 API
curl -X GET https://127.0.0.1:8983/solr/admin/collections?action=RESTORE&name=techproducts_backup&location=file:///path/to/my/shared/drive&collection=techproducts_v3&nrtReplicas=2&createNodeSet=node1,node2&property.foo=bar
V2 API
curl -X POST https://127.0.0.1:8983/api/backups/techproducts_backup/restore -H 'Content-Type: application/json' -d '
{
"collection": "techproducts_v3",
"location": "file:///path/to/my/shared/drive",
"create-collection": {
"nrtReplicas": 2,
"nodeSet": ["node1", "node2"],
"properties": {
"foo": "bar"
}
}
}
'
RESTORE操作は、指定されたバックアップのファイルでコレクションの内容を置き換えます。
指定されたcollection
の値が既存のコレクションと一致する場合、Solrは復元のためにそれを使用します。ただし、保存されたバックアップファイルと互換性がある(シャード数が同じなど)ことが前提です。指定されたcollection
の値が存在しない場合、保存されたバックアップファイルと互換性のある方法で、その名前の新しいコレクションが作成されます。作成されるコレクションは、元のコレクションと同じ数のシャードとレプリカを持ち、ルーティング情報などを保持します。オプションで、一部のパラメーターをオーバーライドできます(下記参照)。
復元中に、同じ名前のconfigsetがZooKeeperに存在する場合は、Solrはそれを再利用します。そうでない場合は、バックアップされたconfigsetをZooKeeperにアップロードして使用します。
コレクションのCREATEALIASコマンドを使用して、クライアントが新しく復元されたコレクションに対してクエリやインデックス作成のエンドポイントを変更する必要がないようにすることができます。
RESTOREパラメーター
collection
-
必須
デフォルト: なし
インデックスが復元されるコレクション。このパラメーターは必須です。
name
-
必須
デフォルト: なし
復元したい既存のバックアップの名前。このパラメーターは必須です。v1リクエストの場合はクエリパラメーターとして、v2リクエストの場合はURLパスで指定します。
location
-
オプション
デフォルト: なし
RESTOREコマンドが読み取るバックアップリポジトリ内の場所。代替として、クラスタープロパティとして設定することもできます。
これは、バックアップを作成するときに
location
オプションとして指定された値と同じである必要があります。 async
-
オプション
デフォルト: なし
このアクションを追跡するためのリクエスト ID。これは、非同期で処理されます。
repository
-
オプション
デフォルト: なし
バックアップに使用するリポジトリの名前。リポジトリが指定されていない場合は、ローカルファイルシステムリポジトリが自動的に使用されます。
backupId
-
オプション
デフォルト: なし
復元する特定のバックアップポイントのID。
バックアップロケーションには、同じコレクションの複数のバックアップを保持できます。このパラメーターを使用すると、ユーザーはどのバックアップを復元に使用するかを選択できます。指定しない場合は、最新のバックアップポイントが使用されます。
オーバーライド可能なパラメーター
さらに、復元先のコレクションがまだ存在しない場合に使用されるコレクション作成パラメーターをいくつか指定できます。これらには、collection.configName
、createNodeSet
(EMPTY
はサポートされていません)、createNodeSet.shuffle
、nrtReplicas
、property.name=value
(つまり、任意のコレクションプロパティ)、pullReplicas
、replicationFactor
、およびtlogReplicas
が含まれます。
これらの各パラメーターの詳細とそのv1またはv2固有の構文については、コレクション作成ドキュメントを参照してください。
DELETEBACKUP:リモートリポジトリからバックアップファイルを削除する
指定されたリポジトリロケーションに保存されているバックアップファイルを削除します。
以前のバージョンのSolrでは、同じ場所に複数のバックアップを保存することをサポートしていない、異なるバックアップファイル構造をサポートしていました。Solrは、この古い形式で保存されたバックアップを復元できますが、非推奨であり、以降のバージョンのSolrで削除されます。DELETEBACKUP APIは非推奨の形式をサポートしておらず、古いバックアップを保持するロケーションでこのAPIを使用しようとすると、エラーメッセージが表示されます。 |
Solrでは、任意の論理的な「場所」に同じコレクションの複数のバックアップを保存できます。これらのバックアップポイントにはそれぞれ識別子(backupId
)が与えられ、このAPIで個別に削除するために使用できます。または、Solrに最後のmaxNumBackupPoints
バックアップを保持し、指定された場所にある他のすべてを削除するように指示することもできます。これらの方法でバックアップポイントを削除すると、どのバックアップポイントからも参照されなくなったインデックスファイルが孤立する可能性があります。これらの孤立したファイルは、purgeUnused
オプションを使用して検出および削除できます。
また、Solrのv2 APIは、これらのバックアップ削除メカニズムごとに個別のAPIエンドポイントを提供します。詳細については、以下の例とパラメーターの説明を参照してください。
DELETEBACKUPの例
バックアップIDによる削除
入力
V1 API
https://127.0.0.1:8983/solr/admin/collections?action=DELETEBACKUP&name=myBackupName&location=/path/to/my/shared/drive&backupId=0
V2 API
curl -X DELETE "https://127.0.0.1:8983/api/backups/myBackupName/versions/0?location=/path/to/my/shared/drive"
出力
{
"responseHeader":{
"status":0,
"QTime":940},
"deleted":[[
"startTime","2021-02-09T03:19:52.085653Z",
"backupId",0,
"size",28381,
"numFiles",53]],
"collection":"books"}
N個の最新バックアップを除くすべてを削除する
V1 API
https://127.0.0.1:8983/solr/admin/collections?action=DELETEBACKUP&name=myBackupName&location=/path/to/my/shared/drive&maxNumBackupsPoints=2
V2 API
curl -X DELETE "https://127.0.0.1:8983/api/backups/myBackupName/versions?retainLatest=2&location=/path/to/my/shared/drive"
未使用ファイルの「ガベージコレクション」
V1 API
https://127.0.0.1:8983/solr/admin/collections?action=DELETEBACKUP&name=myBackupName&location=/path/to/my/shared/drive&purgeUnused=true
V2 API
curl -X PUT -H "Content-type: application/json" "https://127.0.0.1:8983/api/backups/myBackupName/purgeUnused" '
{
"location": "/path/to/my/shared/drive"
}
'
DELETEBACKUPパラメーター
name
-
必須
デフォルト: なし
バックアップファイルを削除するバックアップ名。v1リクエストではクエリパラメーターとして、v2リクエストではパスパラメーターとして指定します。
location
-
必須
デフォルト: なし
バックアップを削除するリポジトリの場所。このパラメーターは必須です。ただし、リポジトリ構成でデフォルトの場所が定義されているか、クラスタープロパティとして設定されている場合は例外です。
ロケーションパスがマウントされたドライブ上にある場合、バックアップされているコレクションのレプリカをホストしていない場合でも、オーバーシーアとして機能するノードでマウントを使用できるようにする必要があります。任意のノードがいつでもオーバーシーアの役割を担うことができるため、バックアップの失敗を防ぐための最善の方法は、マウントポイントがクラスターのすべてのノードで使用できることを確認することです。
これは、バックアップを作成するときに
location
オプションとして指定された値と同じである必要があります。 repository
-
オプション
デフォルト: なし
バックアップファイルの削除に使用するリポジトリの名前。リポジトリが指定されていない場合は、ローカルファイルシステムリポジトリが自動的に使用されます。
backupId
-
オプション
デフォルト: なし
削除する単一のバックアップIDを明示的に指定します。v1 DELETEBACKUPリクエストごとに、
backupId
、maxNumBackupPoints
、およびpurgeUnused
のいずれか1つのみを指定できます。v1リクエストではクエリパラメーターとして、v2リクエストではパスパラメーターとして指定します。 maxNumBackupPoints
(v1),retainLatest
(v2)-
オプション
デフォルト: なし
TODO 保持するバックアップの数を指定し、その他すべてを削除します。DELETEBACKUPリクエストごとに、
backupId
、maxNumBackupPoints
、およびpurgeUnused
のいずれか1つのみを指定できます。 purgeUnused
-
オプション
デフォルト: なし
Solrの増分バックアップサポートでは、それらを参照するバックアップが削除された場合にファイルが孤立する可能性があります。
purgeUnused
フラグパラメーターは、これらの孤立したファイルを検出して削除するスキャンをトリガーします。同じ場所で繰り返しバックアップを実行する管理者は、ディスク領域を再利用するために、このパラメーターを散発的に使用することを計画する必要があります。v1 DELETEBACKUPリクエストごとに、backupId
、maxNumBackupPoints
、およびpurgeUnused
のいずれか1つのみを指定できます。 async
-
オプション
デフォルト: なし
このアクションを追跡するためのリクエスト ID。これは、非同期で処理されます。
REBALANCELEADERS:リーダーの再調整
アクティブなノード間で、preferredLeaderプロパティに従ってコレクション内のリーダーを再割り当てします。
V1 API
https://127.0.0.1:8983/solr/admin/collections?action=REBALANCELEADERS&collection=techproducts
V2 API
v2 APIでは、rebalance-leaders
コマンドは、必要なパラメーターを含むJSONデータの一部として提供されます
curl -X POST https://127.0.0.1:8983/api/collections/techproducts -H 'Content-Type: application/json' -d '
{
"rebalance-leaders": {
"maxAtOnce": 3
}
}
'
リーダーは、アクティブなノードのpreferredLeader
プロパティに従ってコレクション内で割り当てられます。このコマンドは、BALANCESHARDUNIQUEまたはADDREPLICAPROPコマンドを介してpreferredLeaderプロパティが割り当てられた後に実行する必要があります。
コレクション内のすべてのシャードにpreferredLeader プロパティがあることが必須ではありません。再調整は、preferredLeader プロパティがtrue に設定されており、現在シャードリーダーではなく、現在アクティブであるレプリカへのリーダーシップの再割り当てのみを試みます。 |
REBALANCELEADERSパラメーター
collection
-
必須
デフォルト: なし
preferredLeaders
を再調整するコレクションの名前。 maxAtOnce
-
一度にキューに入れる再割り当ての最大数。値<=
0
は、デフォルト値のInteger.MAX_VALUEを使用します。この数に達すると、プロセスは、1つ以上のリーダーが正常に割り当てられるまで待機してから、キューにさらに追加します。
maxWaitSeconds
-
オプション
デフォルト:
60
秒リーダーの再割り当てを待機する際のタイムアウト。
maxAtOnce
が、実行される再割り当ての数よりも少ない場合、これは、少なくとも1つの再割り当てを待機する単一の最大間隔です。たとえば、10回の再割り当てが実行され、
maxAtOnce
が1
で、maxWaitSeconds
が60
の場合、コマンドが待機する可能性のある時間の上限は10分です。
REBALANCELEADERSレスポンス
レスポンスには、リクエストのステータスが含まれます。ステータス「0」は、リクエストが処理されたことを示しており、すべての割り当てが成功したことを示すものではありません。その情報については、「サマリー」セクションを確認してください。
REBALANCELEADERSを使用した例
入力
これらのコマンドのいずれかを実行すると、preferredLeader
プロパティが設定されていて、すでに優先リーダーではないすべてのアクティブなレプリカがリーダーになります。
https://127.0.0.1:8983/solr/admin/collections?action=REBALANCELEADERS&collection=collection1&wt=json
https://127.0.0.1:8983/solr/admin/collections?action=REBALANCELEADERS&collection=collection1&maxAtOnce=5&maxWaitSeconds=30&wt=json
出力
この例では
-
「alreadyLeaders」セクションでは、core_node5がすでにリーダーであったため、shard1のリーダーシップに変更はありませんでした。
-
「inactivePreferreds」セクションでは、core_node57にpreferredLeaderプロパティが設定されていましたが、ノードがアクティブでなかったため、shard7のリーダーは変更されませんでした。これは成功と見なされます。
-
「successes」セクションでは、core_node23がshard3のリーダーではなかったため、リーダーシップはそのレプリカに割り当てられました。
「サマリー」セクションの「成功」タグは、コマンドが、必要に応じてpreferredLeaderプロパティが設定されたすべてのアクティブなレプリカを再調整したことを示しています。レプリカが正常でないためにリーダーになれない場合(たとえば、実行されていないSolrインスタンス上にある場合)も、成功と見なされます。
{
"responseHeader":{
"status":0,
"QTime":3054},
"Summary":{
"Success":"All active replicas with the preferredLeader property set are leaders"},
"alreadyLeaders":{
"core_node5":{
"status":"skipped",
"msg":"Replica core_node5 is already the leader for shard shard1. No change necessary"}},
"inactivePreferreds":{
"core_node57":{
"status":"skipped",
"msg":"Replica core_node57 is a referredLeader for shard shard7, but is inactive. No change necessary"}},
"successes":{
"shard3":{
"status":"success",
"msg":"Successfully changed leader of slice shard3 to core_node23"}}}
この呼び出しを発行した後にクラスター状態を調べると、preferredLeader
プロパティを持つすべてのアクティブなレプリカに、「リーダー」プロパティがtrueに設定されている必要があります。
NRTリーダーによって実行される追加作業は非常に小さく、インデックス作成時にのみ存在します。主なユースケースは、少数のノードに集中している多数のリーダーがいる場合にリーダーロールを再分配することです。リーダーシップロールの不均衡が10の倍数で測定されない限り、再調整によってパフォーマンスが向上する可能性は低いでしょう。 |
preferredLeaderプロパティを分散するBALANCESHARDUNIQUEコマンドは、完全な分散を保証するものではなく、一部のコレクショントポロジではその保証を行うことは不可能です。 |
CREATESNAPSHOT:コレクションのスナップショットを作成する
Solrは、コレクションの「スナップショット」を作成するためのサポートがあり、これにより、必要に応じてユーザーがその時点に戻ることができるように、コレクション状態を「チェックポイント」します。これは、コレクションの再インデックス作成や構成の変更を行う前に特に役立ちます。
コレクションデータをオフディスクにコピーするバックアップとは異なり、スナップショット自体は、ディスクまたはハードウェアの障害が発生した場合のディザスタリカバリを提供しません。バックアップよりも保護機能は劣りますが、コストははるかに安価です。
CREATESNAPSHOTの例
入力
次のAPIコマンドは、指定されたコレクションのスナップショットを作成します。
V1 API
https://127.0.0.1:8983/solr/admin/collections?action=CREATESNAPSHOT&collection=techproducts&commitName=snapshot0&followAliases=true&async=someAsyncId
V2 API
curl -X POST https://127.0.0.1:8983/api/collections/techproducts/snapshots/snapshot0 -H 'Content-Type: application/json' -d '
{
"followAliases": true,
"async": "someAsyncId"
}
'
出力
{
"responseHeader": {
"status": 0,
"QTime": 214
},
"requestid": "someAsyncId",
"collection": "techproducts",
"snapshot": "snapshot0",
"followAliases": true
}
CREATESNAPSHOTパラメーター
collection
-
必須
デフォルト: なし
スナップショットを作成するコレクションの名前。
snapshot
-
必須
デフォルト: なし
コレクション用に作成するスナップショットの名前。
followAliases
-
オプション
デフォルト:false
コレクションパラメータを、解決される実際のコレクション名のエイリアスとして扱うフラグ。
async
-
オプション
デフォルト: なし
このアクションを追跡するためのリクエスト ID。これは、非同期で処理されます。
LISTSNAPSHOTS: コレクションのスナップショットをすべてリスト表示
コレクションで取得されたすべてのスナップショットをリスト表示します。
LISTSNAPSHOTS の例
入力
次のAPIコマンドは、コレクションで取得されたすべてのスナップショットをリスト表示します。
V1 API
https://127.0.0.1:8983/solr/admin/collections?action=LISTSNAPSHOTS&collection=techproducts
V2 API
curl -X GET https://127.0.0.1:8983/api/collections/techproducts/snapshots
出力
{
"responseHeader": {
"status": 0,
"QTime": 2
},
"snapshots": {
"snapshot0": {
"name": "snapshot0",
"status": "Successful",
"creationDate": 1677985318116,
"replicaSnapshots": [
{
"coreName": "techproducts_shard1_replica_n6",
"indexDirPath": "/path/to/solr/dir/node1/solr/techproducts_shard1_replica_n6/data/index/",
"generationNumber": 2,
"leader": true,
"shardId": "shard1",
"files": [
"_0.si",
"_0.fdm",
"_0_Lucene90_0.dvd",
"segments_2",
"_0_Lucene90_0.doc",
"_0_Lucene90_0.tim",
"_0.fdx",
"_0.fdt",
"_0_Lucene90_0.dvm",
"_0_Lucene90_0.tip",
"_0_Lucene90_0.tmd",
"_0.fnm"
]
},
{
"coreName": "techproducts_shard1_replica_n2",
"indexDirPath": "/path/to/solr/dir/node2/solr/techproducts_shard1_replica_n2/data/index/",
"generationNumber": 2,
"leader": false,
"shardId": "shard1",
"files": [
"_0.si",
"_0.fdm",
"_0_Lucene90_0.dvd",
"segments_2",
"_0_Lucene90_0.doc",
"_0_Lucene90_0.tim",
"_0.fdx",
"_0.fdt",
"_0_Lucene90_0.dvm",
"_0_Lucene90_0.tip",
"_0_Lucene90_0.tmd",
"_0.fnm"
]
},
{
"coreName": "techproducts_shard2_replica_n4",
"indexDirPath": "/path/to/solr/dir/node1/solr/techproducts_shard2_replica_n4/data/index/",
"generationNumber": 6,
"leader": true,
"shardId": "shard2",
"files": [
"segments_6"
]
},
{
"coreName": "techproducts_shard2_replica_n1",
"indexDirPath": "/path/to/solr/dir/node2/solr/techproducts_shard2_replica_n1/data/index/",
"generationNumber": 6,
"leader": false,
"shardId": "shard2",
"files": [
"segments_6"
]
}
],
"shards": [
"shard2",
"shard1"
]
}
}
}
DELETESNAPSHOT: コレクションで取得したスナップショットを削除
指定されたコレクションで取得したスナップショットを削除します。
DELETESNAPSHOT の例
入力
次のAPIコマンドは、コレクションで取得したスナップショットを削除します。
V1 API
https://127.0.0.1:8983/solr/admin/collections?action=DELETESNAPSHOT&collection=techproducts&commitName=snapshot0&followAliases=true&async=someAsyncId
V2 API
curl -X DELETE https://127.0.0.1:8983/api/collections/techproducts/snapshots/snapshot0?followAliases=true&async=someAsyncId
出力
{
"responseHeader": {
"status": 0,
"QTime": 20
},
"requestid": "someAsyncId",
"collection": "techproducts",
"snapshot": "snapshot0",
"followAliases": true
}
DELETESNAPSHOT パラメータ
collection
-
必須
デフォルト: なし
スナップショットを削除するコレクションの名前。
snapshot
-
必須
デフォルト: なし
削除するスナップショットの名前。
followAliases
-
オプション
デフォルト:false
collectionNameパラメータを、解決される実際のコレクション名のエイリアスとして扱うフラグ。
async
-
オプション
デフォルト: なし
このアクションを追跡するためのリクエスト ID。これは、非同期で処理されます。