コレクションAPI

SolrCloudクラスターには、多数のコンポーネントが含まれています。コレクションAPIは、コレクション、シャード、レプリカ、バックアップ、リーダー選出、およびその他の必要な操作を含む、クラスターを制御するために提供されています。

このAPIには多数のコマンドとオプションがあるため、コマンドを次のサブセクションにグループ化しました。

クラスターおよびノード管理コマンド:クラスター全体のプロパティを定義します。クラスターのステータスを確認します。ノードからレプリカを削除します。新しく追加されたノードを利用します。ノードの役割を追加または削除します。

コレクション管理コマンド:コレクションの作成、リスト表示、リロード、および削除を行います。コレクションプロパティを設定します。ドキュメントを別のコレクションに移行します。リーダーを再調整します。コレクションのバックアップと復元を行います。

エイリアス管理:コレクションエイリアスの作成、リスト表示、または削除を行います。エイリアスプロパティを設定します。

シャード管理コマンド:シャードの作成と削除を行います。シャードを2つ以上の追加のシャードに分割します。シャードリーダーを強制します。

レプリカ管理コマンド:レプリカの追加または削除を行います。レプリカプロパティを設定します。レプリカを別のノードに移動します。

非同期呼び出し

一部のコレクションAPI呼び出しは実行時間の長いタスク(SPLITSHARDなど)である可能性があるため、オプションで呼び出しを非同期で実行できます。async=<request-id>を指定すると、非同期呼び出しを行うことができ、そのステータスはいつでもREQUESTSTATUS呼び出しを使用して要求できます。指定されたIDは、/を含まない限り、任意の文字列にすることができます。

現在のところ、REQUESTSTATUSは追跡データ構造を自動的にクリーンアップしないため、完了または失敗したタスクのステータスは、手動でクリアしない限り、ZooKeeperに保存されたままになります。DELETESTATUSを使用して、保存されたステータスをクリアできます。ただし、クラスターに保存できる非同期呼び出し応答の数は10,000に制限されています。

非同期リクエストの例

入力

V1 API

https://127.0.0.1:8983/solr/admin/collections?action=SPLITSHARD&collection=collection1&shard=shard1&async=1000

V2 API

curl -X POST https://127.0.0.1:8983/api/collections/collection1/shards -H 'Content-Type: application/json' -d '
  {
    "split": {
      "shard": "shard1",
      "async": "1000"
    }
  }
'

出力

{
  "responseHeader":{
    "status":0,
    "QTime":115},
  "requestid":"1000"}

REQUESTSTATUS:非同期呼び出しのステータスリクエスト

すでに送信された非同期コレクションAPI(下記参照)呼び出しのステータスと応答を要求します。この呼び出しは、保存されたステータスをクリアするためにも使用されます。

V1 API

https://127.0.0.1:8983/solr/admin/collections?action=REQUESTSTATUS&requestid=1000

V2 API

curl -X GET https://127.0.0.1:8983/api/cluster/command-status/1000

REQUESTSTATUSのパラメータ

requestid

必須

デフォルト: なし

リクエストに対してユーザーが定義したリクエストID。これは、送信された非同期タスクのステータスを追跡するために使用できます。

REQUESTSTATUSの使用例

入力: 有効なリクエストID

https://127.0.0.1:8983/solr/admin/collections?action=REQUESTSTATUS&requestid=1000&wt=xml

出力

<response>
  <lst name="responseHeader">
    <int name="status">0</int>
    <int name="QTime">1</int>
  </lst>
  <lst name="status">
    <str name="state">completed</str>
    <str name="msg">found 1000 in completed tasks</str>
  </lst>
</response>

入力: 無効なリクエストID

https://127.0.0.1:8983/solr/admin/collections?action=REQUESTSTATUS&requestid=1004&wt=xml

出力

<response>
  <lst name="responseHeader">
    <int name="status">0</int>
    <int name="QTime">1</int>
  </lst>
  <lst name="status">
    <str name="state">notfound</str>
    <str name="msg">Did not find taskid [1004] in any tasks queue</str>
  </lst>
</response>

DELETESTATUS: ステータスの削除

既に失敗または完了した非同期コレクションAPI呼び出しの保存された応答を削除します。

V1 API

https://127.0.0.1:8983/solr/admin/collections?action=DELETESTATUS&requestid=1000

V2 API

単一のリクエスト応答を削除する

curl -X DELETE https://127.0.0.1:8983/api/cluster/command-status/1000

保存されている完了および失敗した非同期リクエスト応答をすべてフラッシュする

curl -X DELETE https://127.0.0.1:8983/api/cluster/command-status?flush=true

DELETESTATUSのパラメータ

requestid

任意

デフォルト: なし

保存された応答をクリアする必要がある非同期呼び出しのリクエストID。

flush

任意

デフォルト: なし

保存されている完了および失敗した非同期リクエスト応答をすべてクリアする場合は、trueに設定します。

DELETESTATUSの使用例

入力: 有効なリクエストID

https://127.0.0.1:8983/solr/admin/collections?action=DELETESTATUS&requestid=foo&wt=xml

出力

<response>
  <lst name="responseHeader">
    <int name="status">0</int>
    <int name="QTime">1</int>
  </lst>
  <str name="status">successfully removed stored response for [foo]</str>
</response>

入力: 無効なリクエストID

https://127.0.0.1:8983/solr/admin/collections?action=DELETESTATUS&requestid=bar&wt=xml

出力

<response>
  <lst name="responseHeader">
    <int name="status">0</int>
    <int name="QTime">1</int>
  </lst>
  <str name="status">[bar] not found in stored responses</str>
</response>

入力: 保存されているすべてのステータスをクリアする

https://127.0.0.1:8983/solr/admin/collections?action=DELETESTATUS&flush=true&wt=xml

出力

<response>
  <lst name="responseHeader">
    <int name="status">0</int>
    <int name="QTime">1</int>
  </lst>
  <str name="status"> successfully cleared stored collection api responses </str>
</response>