インデックスブロック

インデックスブロックは、特定のインデックスで利用可能な操作の種類を制限します。ブロックは異なる種類があり、書き込み、読み取り、またはメタデータ操作をブロックすることができます。ブロックは動的インデックス設定を使用して設定/削除することができ、専用のAPIを使用して追加することもできます。このAPIは、書き込みブロックがユーザーに正常に返された後、インデックスのすべてのシャードがブロックを適切に考慮していることを保証します。たとえば、書き込みブロックを追加した後、インデックスへのすべての進行中の書き込みが完了していることを確認します。

インデックスブロック設定

次の動的インデックス設定は、インデックスに存在するブロックを決定します:

  • index.blocks.read_only
  • インデックスとインデックスメタデータを読み取り専用にするにはtrueに設定し、書き込みとメタデータの変更を許可するにはfalseに設定します。
  • index.blocks.read_only_allow_delete
  • index.blocks.writeと似ていますが、このブロックが適用されているときにインデックスを削除することができます。このブロックを自分で設定または削除しないでください。ディスクベースのシャードアロケーターは、利用可能なディスクスペースに応じてこのブロックを自動的に設定および削除します。リソースを解放するためにインデックスからドキュメントを削除することは、インデックス自体を削除するのではなく、一時的にインデックスサイズを増加させるため、ノードのディスクスペースが不足している場合には不可能な場合があります。index.blocks.read_only_allow_deletetrueに設定されている場合、ドキュメントの削除は許可されません。ただし、インデックス全体を削除するには非常に少ない追加のディスクスペースが必要であり、インデックスによって消費されるディスクスペースをほぼ即座に解放するため、これは依然として許可されます。Elasticsearchは、ディスク使用率がフラッドステージのウォーターマークを超えると、自動的に読み取り専用-削除許可インデックスブロックを追加し、ディスク使用率が高いウォーターマークを下回ると自動的にこのブロックを削除します。ウォーターマークに関する詳細はディスクベースのシャードアロケーションを参照し、ウォーターマークの問題を解決するためのヘルプはウォーターマークエラーの修正を参照してください。
  • index.blocks.read
  • インデックスに対する読み取り操作を無効にするにはtrueに設定します。

  • index.blocks.write
  • インデックスに対するデータ書き込み操作を無効にするにはtrueに設定します。read_onlyとは異なり、この設定はメタデータには影響しません。たとえば、writeブロックを持つインデックスの設定を調整できますが、read_onlyブロックを持つインデックスの設定を調整することはできません。
  • index.blocks.metadata
  • インデックスメタデータの読み取りと書き込みを無効にするにはtrueに設定します。

インデックスブロック追加API

インデックスにインデックスブロックを追加します。

Python

  1. resp = client.indices.add_block(
  2. index="my-index-000001",
  3. block="write",
  4. )
  5. print(resp)

Js

  1. const response = await client.indices.addBlock({
  2. index: "my-index-000001",
  3. block: "write",
  4. });
  5. console.log(response);

コンソール

  1. PUT /my-index-000001/_block/write

リクエスト

PUT /<index>/_block/<block>

パスパラメータ

  • <index>
  • (オプション、文字列)リクエストを制限するために使用されるインデックス名のカンマ区切りリストまたはワイルドカード式。
    デフォルトでは、ブロックを追加するインデックスを明示的に指定する必要があります。_all*、または他のワイルドカード式を持つインデックスにブロックを追加できるようにするには、action.destructive_requires_name設定をfalseに変更します。この設定はelasticsearch.ymlファイルで更新するか、クラスタ更新設定 APIを使用して更新できます。
  • <block>
  • (必須、文字列)インデックスに追加するブロックタイプ。
    1. - `````metadata
    • インデックスを閉じるなどのメタデータ変更を無効にします。
    • read
    • 読み取り操作を無効にします。
    • read_only
    • 書き込み操作とメタデータ変更を無効にします。
    • write
    • 書き込み操作を無効にします。ただし、メタデータの変更は引き続き許可されます。

クエリパラメータ

  • allow_no_indices
  • (オプション、ブール値)falseの場合、リクエストは、ワイルドカード式、インデックスエイリアス、または_all値が欠落または閉じたインデックスのみをターゲットにする場合にエラーを返します。この動作は、リクエストが他のオープンインデックスをターゲットにしている場合でも適用されます。たとえば、foo*,bar*をターゲットにするリクエストは、fooで始まるインデックスがあるがbarで始まるインデックスがない場合にエラーを返します。
    デフォルトはtrueです。
  • expand_wildcards
  • (オプション、文字列)ワイルドカードパターンが一致できるインデックスのタイプ。リクエストがデータストリームをターゲットにできる場合、この引数はワイルドカード式が隠されたデータストリームと一致するかどうかを決定します。カンマ区切りの値をサポートし、open,hiddenのように指定できます。有効な値は:
    • all
    • すべてのデータストリームまたはインデックスに一致します。隠されたものも含まれます。隠されたもの。
    • open
    • オープンで非隠されたインデックスに一致します。また、非隠されたデータストリームにも一致します。
    • closed
    • 閉じた非隠されたインデックスに一致します。また、非隠されたデータストリームにも一致します。データストリームは閉じることができません。
    • hidden
    • 隠されたデータストリームと隠されたインデックスに一致します。openclosed、またはその両方と組み合わせる必要があります。
    • none
    • ワイルドカードパターンは受け入れられません。
      デフォルトはopenです。
  • ignore_unavailable
  • (オプション、ブール値)falseの場合、リクエストは欠落または閉じたインデックスをターゲットにする場合にエラーを返します。デフォルトはfalseです。
  • master_timeout
  • (オプション、時間単位)マスターノードを待機する期間。タイムアウトが切れる前にマスターノードが利用できない場合、リクエストは失敗し、エラーを返します。デフォルトは30sです。リクエストがタイムアウトしないことを示すために-1に設定することもできます。
  • timeout
  • (オプション、時間単位)クラスタメタデータを更新した後、クラスタ内のすべての関連ノードからの応答を待機する期間。タイムアウトが切れる前に応答が受信されない場合、クラスタメタデータの更新は適用されますが、応答は完全に承認されなかったことを示します。デフォルトは30sです。リクエストがタイムアウトしないことを示すために-1に設定することもできます。

次の例は、インデックスブロックを追加する方法を示しています:

Python

  1. resp = client.indices.add_block(
  2. index="my-index-000001",
  3. block="write",
  4. )
  5. print(resp)

Js

  1. const response = await client.indices.addBlock({
  2. index: "my-index-000001",
  3. block: "write",
  4. });
  5. console.log(response);

コンソール

  1. PUT /my-index-000001/_block/write

APIは次の応答を返します:

コンソール-結果

  1. {
  2. "acknowledged" : true,
  3. "shards_acknowledged" : true,
  4. "indices" : [ {
  5. "name" : "my-index-000001",
  6. "blocked" : true
  7. } ]
  8. }