インデックスブロック
インデックスブロックは、特定のインデックスで利用可能な操作の種類を制限します。ブロックは異なる種類があり、書き込み、読み取り、またはメタデータ操作をブロックすることができます。ブロックは動的インデックス設定を使用して設定/削除することができ、専用のAPIを使用して追加することもできます。このAPIは、書き込みブロックがユーザーに正常に返された後、インデックスのすべてのシャードがブロックを適切に考慮していることを保証します。たとえば、書き込みブロックを追加した後、インデックスへのすべての進行中の書き込みが完了していることを確認します。
インデックスブロック設定
次の動的インデックス設定は、インデックスに存在するブロックを決定します:
index.blocks.read_only
- インデックスとインデックスメタデータを読み取り専用にするには
true
に設定し、書き込みとメタデータの変更を許可するにはfalse
に設定します。 index.blocks.read_only_allow_delete
index.blocks.write
と似ていますが、このブロックが適用されているときにインデックスを削除することができます。このブロックを自分で設定または削除しないでください。ディスクベースのシャードアロケーターは、利用可能なディスクスペースに応じてこのブロックを自動的に設定および削除します。リソースを解放するためにインデックスからドキュメントを削除することは、インデックス自体を削除するのではなく、一時的にインデックスサイズを増加させるため、ノードのディスクスペースが不足している場合には不可能な場合があります。index.blocks.read_only_allow_delete
がtrue
に設定されている場合、ドキュメントの削除は許可されません。ただし、インデックス全体を削除するには非常に少ない追加のディスクスペースが必要であり、インデックスによって消費されるディスクスペースをほぼ即座に解放するため、これは依然として許可されます。Elasticsearchは、ディスク使用率がフラッドステージのウォーターマークを超えると、自動的に読み取り専用-削除許可インデックスブロックを追加し、ディスク使用率が高いウォーターマークを下回ると自動的にこのブロックを削除します。ウォーターマークに関する詳細はディスクベースのシャードアロケーションを参照し、ウォーターマークの問題を解決するためのヘルプはウォーターマークエラーの修正を参照してください。index.blocks.read
インデックスに対する読み取り操作を無効にするには
true
に設定します。index.blocks.write
- インデックスに対するデータ書き込み操作を無効にするには
true
に設定します。read_only
とは異なり、この設定はメタデータには影響しません。たとえば、write
ブロックを持つインデックスの設定を調整できますが、read_only
ブロックを持つインデックスの設定を調整することはできません。 index.blocks.metadata
- インデックスメタデータの読み取りと書き込みを無効にするには
true
に設定します。
インデックスブロック追加API
インデックスにインデックスブロックを追加します。
Python
resp = client.indices.add_block(
index="my-index-000001",
block="write",
)
print(resp)
Js
const response = await client.indices.addBlock({
index: "my-index-000001",
block: "write",
});
console.log(response);
コンソール
PUT /my-index-000001/_block/write
リクエスト
PUT /<index>/_block/<block>
パスパラメータ
<index>
- (オプション、文字列)リクエストを制限するために使用されるインデックス名のカンマ区切りリストまたはワイルドカード式。
デフォルトでは、ブロックを追加するインデックスを明示的に指定する必要があります。_all
、*
、または他のワイルドカード式を持つインデックスにブロックを追加できるようにするには、action.destructive_requires_name
設定をfalse
に変更します。この設定はelasticsearch.yml
ファイルで更新するか、クラスタ更新設定 APIを使用して更新できます。 <block>
- (必須、文字列)インデックスに追加するブロックタイプ。
- `````metadata
- インデックスを閉じるなどのメタデータ変更を無効にします。
read
- 読み取り操作を無効にします。
read_only
- 書き込み操作とメタデータ変更を無効にします。
write
- 書き込み操作を無効にします。ただし、メタデータの変更は引き続き許可されます。
クエリパラメータ
allow_no_indices
- (オプション、ブール値)
false
の場合、リクエストは、ワイルドカード式、インデックスエイリアス、または_all
値が欠落または閉じたインデックスのみをターゲットにする場合にエラーを返します。この動作は、リクエストが他のオープンインデックスをターゲットにしている場合でも適用されます。たとえば、foo*,bar*
をターゲットにするリクエストは、foo
で始まるインデックスがあるがbar
で始まるインデックスがない場合にエラーを返します。
デフォルトはtrue
です。 expand_wildcards
- (オプション、文字列)ワイルドカードパターンが一致できるインデックスのタイプ。リクエストがデータストリームをターゲットにできる場合、この引数はワイルドカード式が隠されたデータストリームと一致するかどうかを決定します。カンマ区切りの値をサポートし、
open,hidden
のように指定できます。有効な値は:all
- すべてのデータストリームまたはインデックスに一致します。隠されたものも含まれます。隠されたもの。
open
- オープンで非隠されたインデックスに一致します。また、非隠されたデータストリームにも一致します。
closed
- 閉じた非隠されたインデックスに一致します。また、非隠されたデータストリームにも一致します。データストリームは閉じることができません。
hidden
- 隠されたデータストリームと隠されたインデックスに一致します。
open
、closed
、またはその両方と組み合わせる必要があります。 none
- ワイルドカードパターンは受け入れられません。
デフォルトはopen
です。
ignore_unavailable
- (オプション、ブール値)
false
の場合、リクエストは欠落または閉じたインデックスをターゲットにする場合にエラーを返します。デフォルトはfalse
です。 master_timeout
- (オプション、時間単位)マスターノードを待機する期間。タイムアウトが切れる前にマスターノードが利用できない場合、リクエストは失敗し、エラーを返します。デフォルトは
30s
です。リクエストがタイムアウトしないことを示すために-1
に設定することもできます。 timeout
- (オプション、時間単位)クラスタメタデータを更新した後、クラスタ内のすべての関連ノードからの応答を待機する期間。タイムアウトが切れる前に応答が受信されない場合、クラスタメタデータの更新は適用されますが、応答は完全に承認されなかったことを示します。デフォルトは
30s
です。リクエストがタイムアウトしないことを示すために-1
に設定することもできます。
例
次の例は、インデックスブロックを追加する方法を示しています:
Python
resp = client.indices.add_block(
index="my-index-000001",
block="write",
)
print(resp)
Js
const response = await client.indices.addBlock({
index: "my-index-000001",
block: "write",
});
console.log(response);
コンソール
PUT /my-index-000001/_block/write
コンソール-結果
{
"acknowledged" : true,
"shards_acknowledged" : true,
"indices" : [ {
"name" : "my-index-000001",
"blocked" : true
} ]
}