コレクション管理コマンド

コレクションは、単一の 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.namecompositeId の場合に必須のパラメーターです。

shards (v1)、shardNames (v2)

オプション

デフォルト: なし

このコレクションを作成するときに使用するシャード名。これは、router.nameimplicit の場合に必須のパラメーターです。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

オプション

デフォルト: なし

コアプロパティ namevalue に設定します。サポートされているプロパティと値の詳細については、「コアディスカバリ」セクションを参照してください。これらのプロパティは、後でコレクションにレプリカを追加するときに作成されるすべての新しいコアにも適用されます。

各 core.properties ファイルのエントリは、Solr が正しく機能するために不可欠です。エントリをオーバーライドすると、使用できないコレクションになる可能性があります。property.name=value を指定してこれらのエントリを変更することは、専門家レベルのオプションであり、結果を十分に理解している場合にのみ使用してください。

waitForFinalState

オプション

デフォルト: なし

true の場合、影響を受けるすべてのレプリカがアクティブになった場合にのみ、リクエストが完了します。デフォルトは false であり、これは、API が単一のアクションのステータスを返すことを意味し、これは新しいレプリカがオンラインでアクティブになる前である可能性があります。

alias

オプション

デフォルト: なし

コレクションが作成されるとき、追加でこのコレクションを指すエイリアスを作成できます。このパラメーターを使用すると、このエイリアスの名前を指定できるため、この操作を CREATEALIAS と効果的に組み合わせることができます。

async

オプション

デフォルト: なし

このアクションを追跡するためのリクエスト ID。これは、非同期で処理されます。

コレクションは最初に読み書きモードで作成されますが、MODIFYCOLLECTION アクションを使用して readOnly モードにすることができます。

CREATE レスポンス

レスポンスには、リクエストのステータスと新しいコア名が含まれます。ステータスが "success" 以外の場合は、リクエストが失敗した理由を説明するエラーメッセージが表示されます。

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。これは、非同期で処理されます。

RELOAD レスポンス

レスポンスには、リクエストのステータスとリロードされたコアが含まれます。ステータスが "success" 以外の場合は、リクエストが失敗した理由を説明するエラーメッセージが表示されます。

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 を使用した例

collection1collection2 という名前の 2 つの実際の SolrCloud コレクションがあり、次のエイリアスが既に存在すると仮定します。

  • col1 ⇒ collection1: これは collection1 に解決されます。

  • col2 ⇒ collection2: これは collection2 に解決されます。

  • simpleAlias ⇒ col1: これは collection1 に解決されます。

  • compoundAlias ⇒ col1,col2: これは collection1,collection2 に解決されます。

col1foo に 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 に縮小されます。

  • collection1collection2: この新しく作成されたエイリアスは、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

COLLECTIONPROP パラメータ

name (v1)

オプション

デフォルト: なし

プロパティを設定するコレクションの名前。v2 リクエストのパスに表示されます。

propertyName (v1)

オプション

デフォルト: なし

プロパティの名前。v2 リクエストのパスに表示されます。

propertyValue (v1), value (v2)

オプション

デフォルト: なし

プロパティの値。v1 リクエストで提供されない場合、プロパティは削除されます。

COLLECTIONPROP レスポンス

レスポンスには、リクエストのステータスと更新または削除されたプロパティが含まれます。ステータスが「0」以外の場合、リクエストが失敗した理由を説明するエラーメッセージが表示されます。

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

オプション

デフォルト: なし

コアプロパティ namevalue に設定します。サポートされているプロパティと値の詳細については、コア検出セクションを参照してください。

async

オプション

デフォルト: なし

このアクションを追跡するためのリクエスト ID。これは、非同期で処理されます。

MIGRATE レスポンス

レスポンスには、リクエストのステータスが含まれます。

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 コレクションセクションで説明されています)。numShardsreplicationFactornrtReplicastlogReplicaspullReplicasshardspolicycreateNodeSetcreateNodeSet.shufflerouter.*

再インデックス作成プロセスが完了すると、ターゲットコレクションは 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_numericdocValues_binaryなど)によるdoc値の集計サイズを表します。

  • points - ポイント値の集計サイズを表します。

COLSTATUSレスポンス

レスポンスには、コレクションステータスの概要、アクティブまたは非アクティブなシャードとレプリカの数、およびシャードリーダーの追加インデックス情報が含まれます。

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には、多くのリポジトリのバックアップサポートが付属しています。完全なリストについては、バックアップストレージリポジトリセクションを参照してください。

バックアップデータは、指定されたnamelocationに基づいて、指定されたリポジトリのディレクトリに格納されます。各バックアップロケーションは、同じコレクションの複数のバックアップを保持できるため、ユーザーは後で必要に応じてこれらの「バックアップポイント」のいずれかから復元できます。ロケーション内では、バックアップは増分的に実行されるため、以前にアップロードされたインデックスファイルはスキップされ、バックアップリポジトリで重複することはありません。複数のコレクションを同じロケーションにバックアップすることはできません。

以前のバージョンのSolrでは、上記のような増分サポートがない異なるバックアップファイル形式をサポートしていました。Solrは、この古い形式を使用するバックアップから引き続き復元できますが、この形式の新しいバックアップを作成することはお勧めできず、正式に非推奨になっています。詳細については、以下のincrementalパラメーターを参照してください。

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.configNamecreateNodeSetEMPTYはサポートされていません)、createNodeSet.shufflenrtReplicasproperty.name=value(つまり、任意のコレクションプロパティ)、pullReplicasreplicationFactor、および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リクエストごとに、backupIdmaxNumBackupPoints、およびpurgeUnusedのいずれか1つのみを指定できます。v1リクエストではクエリパラメーターとして、v2リクエストではパスパラメーターとして指定します。

maxNumBackupPoints (v1), retainLatest (v2)

オプション

デフォルト: なし

TODO 保持するバックアップの数を指定し、その他すべてを削除します。DELETEBACKUPリクエストごとに、backupIdmaxNumBackupPoints、およびpurgeUnusedのいずれか1つのみを指定できます。

purgeUnused

オプション

デフォルト: なし

Solrの増分バックアップサポートでは、それらを参照するバックアップが削除された場合にファイルが孤立する可能性があります。purgeUnusedフラグパラメーターは、これらの孤立したファイルを検出して削除するスキャンをトリガーします。同じ場所で繰り返しバックアップを実行する管理者は、ディスク領域を再利用するために、このパラメーターを散発的に使用することを計画する必要があります。v1 DELETEBACKUPリクエストごとに、backupIdmaxNumBackupPoints、および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回の再割り当てが実行され、maxAtOnce1で、maxWaitSeconds60の場合、コマンドが待機する可能性のある時間の上限は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"
      ]
    }
  }
}

LISTSNAPSHOTS パラメータ

collection

必須

デフォルト: なし

スナップショットを作成するコレクションの名前。

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。これは、非同期で処理されます。