インデックス回復API
1つ以上のインデックスの進行中および完了したシャード回復に関する情報を返します。データストリームの場合、APIはストリームのバックインデックスに関する情報を返します。
Python
resp = client.indices.recovery(
index="my-index-000001",
)
print(resp)
Ruby
response = client.indices.recovery(
index: 'my-index-000001'
)
puts response
Js
const response = await client.indices.recovery({
index: "my-index-000001",
});
console.log(response);
コンソール
GET /my-index-000001/_recovery
リクエスト
GET /<target>/_recovery
GET /_recovery
前提条件
- Elasticsearchのセキュリティ機能が有効になっている場合、ターゲットデータストリーム、インデックス、またはエイリアスに対して
monitor
またはmanage
インデックス権限を持っている必要があります。
説明
インデックス回復APIを使用して、進行中および完了したシャード回復に関する情報を取得します。
シャード回復は、スナップショットからプライマリシャードを復元したり、プライマリシャードからレプリカシャードを作成したりするなど、シャードコピーを初期化するプロセスです。シャード回復が完了すると、回復されたシャードは検索およびインデックス作成に利用可能になります。
回復は次のプロセス中に自動的に発生します:
- インデックスを初めて作成する時。
- ノードがクラスターに再参加し、データパスに保持しているデータを使用して欠落しているプライマリシャードコピーを起動する時。
- プライマリから新しいレプリカシャードコピーを作成する時。
- 同じクラスター内の別のノードにシャードコピーを移動する時。
- スナップショットの復元操作。
- クローン、縮小、または分割操作。
回復またはcat recovery APIを使用して、シャード回復の原因を特定できます。
インデックス回復APIは、クラスター内に現在存在するシャードコピーの完了した回復に関する情報のみを報告します。各シャードコピーの最後の回復のみを報告し、以前の回復に関する履歴情報や、もはや存在しないシャードコピーの回復に関する情報は報告しません。これは、シャードコピーが回復を完了し、その後Elasticsearchがそれを別のノードに移動した場合、元の回復に関する情報は回復APIに表示されないことを意味します。
パスパラメータ
<target>
- (オプション、文字列)リクエストを制限するために使用されるデータストリーム、インデックス、およびエイリアスのカンマ区切りリスト。ワイルドカード(
*
)をサポートします。すべてのデータストリームとインデックスを対象とするには、このパラメータを省略するか、*
または_all
を使用します。
クエリパラメータ
active_only
- (オプション、Boolean)
true
の場合、応答には進行中のシャード回復のみが含まれます。デフォルトはfalse
です。 detailed
- (オプション、Boolean)
true
の場合、応答にはシャード回復に関する詳細情報が含まれます。デフォルトはfalse
です。 index
- (オプション、文字列)リクエストを制限するために使用されるインデックス名のカンマ区切りリストまたはワイルドカード式。
レスポンスボディ
id
- (整数)シャードのID。
type
- (文字列)シャードの回復元。返される値には次のものが含まれます:
EMPTY_STORE
- 空のストア。新しいプライマリシャードまたはクラスター再ルートAPIを使用して空のプライマリシャードを強制的に割り当てたことを示します。
EXISTING_STORE
- 既存のプライマリシャードのストア。ノードの起動または既存のプライマリシャードの割り当てに関連する回復を示します。
LOCAL_SHARDS
- 同じノード上の別のインデックスのシャード。クローン($9dc5caa6974383a9.md)、縮小($b71a275dcf175740.md)、または分割($2df8972352f7ef9a.md)操作に関連する回復を示します。
PEER
- 別のノード上のプライマリシャード。シャードのレプリケーションに関連する回復を示します。
SNAPSHOT
- スナップショット。スナップショット復元($35f6ad3a9c34a128.md)操作に関連する回復を示します。
STAGE
- (文字列)回復ステージ。返される値には次のものが含まれます:
INIT
- 回復が開始されていません。
INDEX
- インデックスメタデータを読み取り、ソースから宛先にバイトをコピーしています。
VERIFY_INDEX
- インデックスの整合性を検証しています。
TRANSLOG
- トランザクションログを再生しています。
FINALIZE
- クリーンアップ。
DONE
- 完了。
primary
- (Boolean)
true
の場合、シャードはプライマリシャードです。 start_time
- (文字列)回復開始のタイムスタンプ。
stop_time
- (文字列)回復終了のタイムスタンプ。
total_time_in_millis
- (文字列)シャードを回復するのにかかった合計時間(ミリ秒)。
source
- (オブジェクト)回復元。これには次のものが含まれる場合があります:
- スナップショットからの回復の場合のリポジトリの説明
- ソースノードの説明
target
- (オブジェクト)宛先ノード。
index
- (オブジェクト)物理インデックス回復に関する統計。
translog
- (オブジェクト)トランスログ回復に関する統計。
start
- (オブジェクト)インデックスを開いて開始するのにかかった時間に関する統計。
例
複数のデータストリームとインデックスの回復情報を取得
Python
resp = client.indices.recovery(
index="index1,index2",
human=True,
)
print(resp)
Ruby
response = client.indices.recovery(
index: 'index1,index2',
human: true
)
puts response
Js
const response = await client.indices.recovery({
index: "index1,index2",
human: "true",
});
console.log(response);
コンソール
GET index1,index2/_recovery?human
クラスター内のすべてのデータストリームとインデックスのセグメント情報を取得
Python
resp = client.indices.recovery(
human=True,
)
print(resp)
Ruby
response = client.indices.recovery(
human: true
)
puts response
Js
const response = await client.indices.recovery({
human: "true",
});
console.log(response);
コンソール
GET /_recovery?human
コンソール-結果
{
"index1" : {
"shards" : [ {
"id" : 0,
"type" : "SNAPSHOT",
"stage" : "INDEX",
"primary" : true,
"start_time" : "2014-02-24T12:15:59.716",
"start_time_in_millis": 1393244159716,
"stop_time" : "0s",
"stop_time_in_millis" : 0,
"total_time" : "2.9m",
"total_time_in_millis" : 175576,
"source" : {
"repository" : "my_repository",
"snapshot" : "my_snapshot",
"index" : "index1",
"version" : "{version}",
"restoreUUID": "PDh1ZAOaRbiGIVtCvZOMww"
},
"target" : {
"id" : "ryqJ5lO5S4-lSFbGntkEkg",
"host" : "my.fqdn",
"transport_address" : "my.fqdn",
"ip" : "10.0.1.7",
"name" : "my_es_node"
},
"index" : {
"size" : {
"total" : "75.4mb",
"total_in_bytes" : 79063092,
"reused" : "0b",
"reused_in_bytes" : 0,
"recovered" : "65.7mb",
"recovered_in_bytes" : 68891939,
"recovered_from_snapshot" : "0b",
"recovered_from_snapshot_in_bytes" : 0,
"percent" : "87.1%"
},
"files" : {
"total" : 73,
"reused" : 0,
"recovered" : 69,
"percent" : "94.5%"
},
"total_time" : "0s",
"total_time_in_millis" : 0,
"source_throttle_time" : "0s",
"source_throttle_time_in_millis" : 0,
"target_throttle_time" : "0s",
"target_throttle_time_in_millis" : 0
},
"translog" : {
"recovered" : 0,
"total" : 0,
"percent" : "100.0%",
"total_on_start" : 0,
"total_time" : "0s",
"total_time_in_millis" : 0
},
"verify_index" : {
"check_index_time" : "0s",
"check_index_time_in_millis" : 0,
"total_time" : "0s",
"total_time_in_millis" : 0
}
} ]
}
}
この応答には、単一のインデックスが単一のシャードを回復している情報が含まれています。回復のソースはスナップショットリポジトリであり、回復のターゲットはmy_es_node
ノードです。
応答には、回復されたファイルとバイトの数と割合も含まれています。
詳細な回復情報を取得
回復中の物理ファイルのリストを取得するには、detailed
クエリパラメータをtrue
に設定します。
Python
resp = client.indices.recovery(
human=True,
detailed=True,
)
print(resp)
Ruby
response = client.indices.recovery(
human: true,
detailed: true
)
puts response
Js
const response = await client.indices.recovery({
human: "true",
detailed: "true",
});
console.log(response);
コンソール
GET _recovery?human&detailed=true
コンソール-結果
{
"index1" : {
"shards" : [ {
"id" : 0,
"type" : "EXISTING_STORE",
"stage" : "DONE",
"primary" : true,
"start_time" : "2014-02-24T12:38:06.349",
"start_time_in_millis" : "1393245486349",
"stop_time" : "2014-02-24T12:38:08.464",
"stop_time_in_millis" : "1393245488464",
"total_time" : "2.1s",
"total_time_in_millis" : 2115,
"source" : {
"id" : "RGMdRc-yQWWKIBM4DGvwqQ",
"host" : "my.fqdn",
"transport_address" : "my.fqdn",
"ip" : "10.0.1.7",
"name" : "my_es_node"
},
"target" : {
"id" : "RGMdRc-yQWWKIBM4DGvwqQ",
"host" : "my.fqdn",
"transport_address" : "my.fqdn",
"ip" : "10.0.1.7",
"name" : "my_es_node"
},
"index" : {
"size" : {
"total" : "24.7mb",
"total_in_bytes" : 26001617,
"reused" : "24.7mb",
"reused_in_bytes" : 26001617,
"recovered" : "0b",
"recovered_in_bytes" : 0,
"recovered_from_snapshot" : "0b",
"recovered_from_snapshot_in_bytes" : 0,
"percent" : "100.0%"
},
"files" : {
"total" : 26,
"reused" : 26,
"recovered" : 0,
"percent" : "100.0%",
"details" : [ {
"name" : "segments.gen",
"length" : 20,
"recovered" : 20
}, {
"name" : "_0.cfs",
"length" : 135306,
"recovered" : 135306,
"recovered_from_snapshot": 0
}, {
"name" : "segments_2",
"length" : 251,
"recovered" : 251,
"recovered_from_snapshot": 0
}
]
},
"total_time" : "2ms",
"total_time_in_millis" : 2,
"source_throttle_time" : "0s",
"source_throttle_time_in_millis" : 0,
"target_throttle_time" : "0s",
"target_throttle_time_in_millis" : 0
},
"translog" : {
"recovered" : 71,
"total" : 0,
"percent" : "100.0%",
"total_on_start" : 0,
"total_time" : "2.0s",
"total_time_in_millis" : 2025
},
"verify_index" : {
"check_index_time" : 0,
"check_index_time_in_millis" : 0,
"total_time" : "88ms",
"total_time_in_millis" : 88
}
} ]
}
}
応答には、回復された物理ファイルとそのサイズのリストが含まれています。
応答には、回復のさまざまな段階のミリ秒単位のタイミングも含まれています:
- インデックス取得
- トランスログ再生
- インデックス開始時間
この応答は、回復がdone
であることを示しています。進行中または完了したすべての回復はクラスター状態に保持され、いつでも報告される可能性があります。
進行中の回復に関する情報のみを返すには、active_only
クエリパラメータをtrue
に設定します。