すべてのプロダクト
Search
ドキュメントセンター

Elasticsearch:コレクションとスライスの管理

最終更新日:Sep 22, 2026

Collection の作成、参照、更新、削除、Mapping と動的な設定項目の更新、Backing の事前作成、Slice の登録、クエリ、一覧表示、削除、および Collection エイリアスの管理を行います。Backing は、システムがドキュメントを格納する基盤となるインデックスです。1 つの Backing には複数の Slice を含めることができます。この例では、名前空間モードの Collection クイックスタート knowledge-chunks を使用します。作成例では、さまざまな構成メソッドを示しており、同じ名前の Collection がすでに存在する場合、繰り返し実行することはできません。更新可能なパラメーターには更新 API を使用してください。作成後に変更できないパラメーターについては、別の Collection を作成してください。

コレクションの作成

コレクション名は、Elasticsearch のインデックスとエイリアスの命名規則に準拠する必要があります。名前は小文字で、長さが 128 バイトを超えてはならず、システム予約のプレフィックス .sc- を使用することはできません。

PUT /_slice_collection/{collection}

クエリパラメーター:master_timeout (マスターノードがリクエストを処理するのを待つ時間) と timeout (作成の確認応答を待つ時間)。

次の表に、リクエストボディのパラメーターを示します。

パラメーターデフォルト値説明
slice_strategyexactコレクションモード。名前空間モード (exact) とベクタークラスター検索モード (vector_cluster) がサポートされています。このパラメーターは、コレクションの作成後に変更することはできません。
auto_create_sliceexact:true、vector_cluster:false書き込みリクエストが存在しないスライスを参照した場合に、スライスを自動的に登録するかどうかを指定します。
max_slices_per_shard200値は 0 より大きい必要があります。このパラメーターは、プライマリシャードの数と組み合わせて、バッキングが受け入れ可能な新しいスライスの数のしきい値を計算するために使用されます。単一のスライス内のドキュメント数を制限するものではありません。詳細については、「容量パラメーターがどのように有効になるか」をご参照ください。
max_storage_per_shard50gb新しいスライスを受け入れるための、プライマリシャードごとのソフトストレージしきい値。このパラメーターを 0b に設定すると、しきい値が無効になります。
backing_allocation_strategylast新しいスライスのためのバッキング選択ポリシー。last は、利用可能な最新のバッキングを優先的に選択します。random は、利用可能なバッキングをランダムに選択します。
settings{}バッキングインデックスで使用される Elasticsearch インデックス設定。明示的に設定されていない場合、index.number_of_replicas はデフォルトで 2 になります。
mappings{}コレクションのマッピング。マッピングはすべてのバッキングインデックスに適用されます。
aliases{}コレクションと一緒に作成するコレクションエイリアス。is_write_index パラメーターのみがサポートされています。
configなしベクタークラスター取得モードの構成。詳細については、「ベクタークラスター取得リファレンス」をご参照ください。名前空間モードでは、空ではない config 値は受け付けられません。それ以外の場合、HTTP 400 が返されます。

例:

PUT /_slice_collection/knowledge-chunks
{
  "max_slices_per_shard": 200,
  "max_storage_per_shard": "50gb",
  "settings": {
    "index.number_of_shards": 2,
    "index.number_of_replicas": 2
  },
  "mappings": {
    "properties": {
      "tenant_id": { "type": "keyword" },
      "category": { "type": "keyword" }
    }
  }
}

成功レスポンスのサンプル:

{
  "acknowledged": true
}

acknowledged=true は、コレクション設定が作成されたことを示します。リクエストがタイムアウトした場合や接続に失敗した場合は、GET /_slice_collection/knowledge-chunks を呼び出して実際の状態を確認してください。リトライのレスポンスに基づいてコレクションが作成されたかどうかを判断しないでください。

容量パラメーターがどのように有効になるか

max_slices_per_shard は、コレクション作成リクエストボディのトップレベルパラメーターであり、settings には属しません。システムは、バッキング内のプライマリシャードの数に基づいて、バッキングが受け入れ可能な新しいスライスの数を計算します。これは、複数のビジネスパーティションが基盤となるシャードのグループをどのように共有するかを計画するのに役立ちます。

システムは、バッキング内のスライスの総数に基づいて割り当てを継続するかどうかを決定します。バッキングに N 個のプライマリシャードがある場合、しきい値は N × max_slices_per_shard です。レプリカは計算に含まれません。たとえば、バッキングに 2 つのプライマリシャードがあり、パラメーターが 200 に設定されている場合、しきい値は 400 スライスです。これは、各プライマリシャードに同じ数のスライスが割り当てられることを保証するものでも、各プライマリシャードの厳密なハードリミットでもありません。

システムはまた、各プライマリシャードのドキュメントストレージサイズを非同期でチェックし、最大値を max_storage_per_shard と比較します。しきい値に達した後、システムはバッキングへの新しいスライスの割り当てを停止します。これは新しいスライスの割り当てしきい値であり、リアルタイムのディスク容量制限ではありません。ストレージのしきい値または停止した割り当て状態 (CAT の assign=disabled) により、数量のしきい値に達する前にバッキングが新しいスライスを受け入れなくなる可能性があります。

max_slices_per_shard と max_storage_per_shard は、後続の新しいスライスがバッキングに引き続き割り当てられるかどうかのみを決定します:

  • いずれかのしきい値に達すると、システムは新しいスライスのために別のバッキングを選択または作成します。

  • 既存のスライスは引き続き書き込みを受け入れることができます。

  • しきい値を変更しても、既存のスライスは移行されず、既存のデータは再調整されません。

    多数の小さなスライスがある場合は、ストレステストの結果に基づいて値を増やし、必要なバッキングの数を減らすことができます。単一のスライスに大量のデータが含まれているか、重いワークロードを処理している場合は、値を減らして、後続の新しいスライスが他のバッキングをより早く使用するようにできます。数量のしきい値を増やした後も、ストレージのしきい値は有効です。この値を増やすだけでは、既存のデータやクエリのホットスポットの問題は解決できません。「コレクションの更新」で説明されているように、パラメーターを調整できます。

backing_allocation_strategy のデフォルトは last で、ほとんどの場合に適しています。複数の Backing が同時に新しい Slice を受け入れることができ、新しく登録された Slice をそれらの間でランダムに分散させたい場合にのみ、random を使用します。事前作成 API を count > 1 で呼び出すと、システムは random への自動切り替えを実行します。詳細については、「Backing を事前作成する」をご参照ください。

デフォルトでは、Backing はオンデマンドで作成されます。テナントを有効にするか、データをバッチでインポートする前に、Backing を事前に作成できます。詳細については、「Backing を事前に作成する」をご参照ください。

指定されたスライス内でのテキスト検索の最適化

キーワード検索やフルテキストインデックスの検索が、通常 1 つまたは少数の指定されたスライスのみをクエリする場合、コレクション作成時に index.sliced_postings.enabled を使用して、クエリがアクセスする必要のある転置インデックスデータの範囲を減らすことができます。

デフォルト値:名前空間モード (exact) では、パラメーターが設定されていないか null に設定されている場合、デフォルト値は true です。ベクタークラスター検索モード (vector_cluster) では、デフォルト値は false です。true または false が明示的に設定されている場合は、設定された値が使用されます。

この設定はコレクションの作成時にのみ指定でき、作成後に変更することはできません。

_slice=_all を使用してすべてのスライスを検索するクエリは、この最適化の恩恵を受けることができず、通常は追加のクエリオ ーバーヘッドが発生します。ビジネスが主にグローバルなテキスト検索を実行する場合は、コレクションを作成する際にこの設定を明示的に無効にすることを推奨します。次の例では、関連する設定のみを示しています。実際の作成時には、必須の設定、マッピング、シャード設定も提供してください:

PUT /_slice_collection/text-search-demo
{
  "settings": {
    "index.sliced_postings.enabled": false
  }
}

この設定は、名前空間モードではデフォルトで有効になります。Collection を作成する前に、スライスされたポスティングのフィールドとエンコーディングの制約を確認してください。互換性のないフィールドまたは構成が存在する場合、作成時にパラメーターを明示的に false に設定してください。

コレクションの表示

GET /_slice_collection/knowledge-chunks

すべてのコレクションを一覧表示します:

GET /_slice_collection

{collection} は、カンマ区切りの名前とワイルドカードをサポートしています。正確な名前が存在しない場合は、HTTP 404 が返されます。ワイルドカードに一致する項目がない場合は、{"slice_collections": {}} が返されます。

クエリパラメーター:

パラメーターデフォルト値説明
flat_settingsfalseフラット化されたキー名で設定を返すかどうかを指定します。
master_timeout30sコレクションのメタデータが利用可能になるまで待機する最大時間。

この API は、ターゲットコレクションに対する monitor インデックス権限のみを必要とします。クラスターレベルの monitor 権限は必要ありません。

レスポンスのサンプル:

{
  "slice_collections": {
    "knowledge-chunks": {
      "collection_uuid": "opaque-system-id",
      "lifecycle_state": "active",
      "max_slices_per_shard": 200,
      "max_storage_per_shard": "50gb",
      "backing_allocation_strategy": "last",
      "future_only_settings": {},
      "auto_create_slice": true,
      "slice_strategy": "exact",
      "max_managed_backing_generation": 0,
      "latest_backing": {
        "settings": {
          "index": {
            "number_of_shards": "2",
            "number_of_replicas": "2"
          }
        },
        "mappings": {
          "properties": {
            "tenant_id": { "type": "keyword" },
            "category": { "type": "keyword" }
          }
        }
      },
      "aliases": {}
    }
  }
}

フィールドの説明:

  • latest_backing は、まだ存在する最新のバッキングインデックスから取得されます。settings には、バッキングの現在の継承可能で公開されている設定が含まれます。これには、システムによって自動的に追加されたり、後で更新されたりしたフィールドが含まれる場合があります。mappings は、バッキングの現在のマッピングであり、したがって動的に追加されたフィールドも含まれます。

  • future_only_settings は、後で作成されるバッキングにのみ影響し、現在の最新のバッキングがすでにこれらの値を使用していることを示すものではありません。

  • collection_uuid と max_managed_backing_generation は、システム管理用のフィールドです。アプリケーションはこれらを不透明な情報として扱い、バッキング名の構築やビジネスロジックの実装に使用してはなりません。

コレクションの更新

この API は、後続で登録されるスライスのアロケーションポリシーを調整します。既存のスライスを移動するものではありません。すべての現在のバッキングのマッピングまたは動的インデックス設定を変更するには、代わりに次のセクションで説明するマッピングと動的設定の更新 API を使用してください。

POST /_slice_collection/knowledge-chunks/_update
{
  "max_slices_per_shard": 300,
  "max_storage_per_shard": "80gb",
  "backing_allocation_strategy": "last",
  "auto_create_slice": false,
  "settings": {
    "apack.slice_collection.future.index.number_of_shards": 4
  }
}

クエリパラメーター:

パラメーターデフォルト値説明
master_timeout30sマスターノードがリクエストを処理するのを待つ時間。
timeout30s更新の確認応答を待つ時間。
preserve_existingfalseこのパラメーターが true に設定されている場合、settings にもキーが表示される既存の将来のみ有効な設定は保持され、欠落しているキーが追加されます。このパラメーターは、リクエスト内の他のフィールドが更新されるのを防ぐものではありません。

次のフィールドを更新できます:max_slices_per_shard、max_storage_per_shard、backing_allocation_strategy、auto_create_slice、および settings 内の許可された将来有効な設定。

将来有効な設定は、後で作成されるバッキングにのみ影響し、既存のバッキングは変更しません。デフォルトで許可されている設定は次のとおりです:

  • index.number_of_shards

  • index.routing_partition_size

  • index.number_of_routing_shards

    _update リクエストでは、これらの設定は apack.slice_collection.future. プレフィックスを使用する必要があります。たとえば、index.number_of_shards は apack.slice_collection.future.index.number_of_shards に対応します。設定を書き込むときは、フラット化されたプレフィックスを使用してください。GET /_slice_collection/{collection} を使用して読み戻すと、"future_only_settings": {"index": {"number_of_shards": "4"}} のようなネストされた構造として表示されます。

成功レスポンスは {"acknowledged": true} です。acknowledged=false は、確認応答の待機がタイムアウトしたことを示します。更新がロールバックされたことを示すものではありません。

マッピングと動的設定の更新

コレクション名を使用してマッピングを更新します:

PUT /knowledge-chunks/_mapping
{
  "properties": {
    "channel": { "type": "keyword" }
  }
}

コレクション名を使用して動的インデックス設定を更新します。 次の例では、更新間隔をデフォルト値 5s にリセットします。 Collection の作成時に、このデフォルト値を明示的に設定する必要はありません。 この変更は Collection 全体に影響します。 使用条件については、「リフレッシュとクエリの可視性」をご参照ください:

PUT /knowledge-chunks/_settings
{
  "index.refresh_interval": "5s"
}

マッピングと動的インデックス設定は、すべての現在のバッキングに適用され、後続のバッキングの統一された設定になります。同じコレクション内のすべてのスライスは、これらの設定を共有します。特定のスライスのフィールドタイプやインデックス設定を個別に変更することはできません。バッキングインデックスを個別に変更しないでください。

変更が有効になったことを確認するには、GET /_slice_collection/{collection} を呼び出して latest_backing の値を読み戻します。mappings フィールドは現在のマッピングを反映し、settings フィールドは現在のインデックス設定を反映します。

バッキングの事前作成

デフォルトでは、システムはオンデマンドでバッキングインデックスを作成します。新しいスライスを登録するときに、既存のすべてのバッキングが容量のしきい値に達した場合、システムは次のバッキングの自動作成を実行します。多数のテナントを有効にしたり、データをバッチでインポートしたりする前に、これらの基盤となるインデックスを事前に準備して、最初のバッチのスライスが登録される際のインデックス作成の待機レイテンシを短縮できます。

バッキングの事前作成とスライスの登録は、個別の操作です。前者はデータストレージ用のインデックスを準備し、後者はアプリケーションがアクセスするビジネスパーティションを作成します。事前作成では、テナントスライスが自動的に登録されたり、既存のデータが移動されたりすることはありません。コレクションの manage 権限を持つアカウントは、この API を呼び出すことができます。完全な権限構成については、「コレクションの権限」をご参照ください。

バッキングの事前作成と結果の表示

最初にコレクションを作成し、次に以下のリクエストを実行します:

PUT /_slice_collection/knowledge-chunks/backings?count=5

または、同等のリクエストボディ構文を使用します。2 つの方法のいずれかを使用してください:

PUT /_slice_collection/knowledge-chunks/backings
{
  "count": 5
}

count は必須の整数であり、クエリパラメーターまたはリクエストボディのいずれかで 1 回だけ指定できます。両方の場所で値を指定するリクエストは、値が同じであっても拒否されます。有効な値:1 から 99999。この API は master_timeout もサポートしています。

count=5 は、コレクションの最初の 5 つのバッキングが存在することを確認することを意味し、毎回 5 つのバッキングを追加するわけではありません。以前に最初のバッキングしか存在しなかった場合、リクエストは他の 4 つを作成します。次のサンプルレスポンスはこのケースを示しています。名前の省略記号はシステムが生成したコンテンツを表しており、リクエストで直接使用することはできません:

{
  "acknowledged": true,
  "backings": [
    ".sc-knowledge-chunks-...-00000",
    ".sc-knowledge-chunks-...-00001",
    ".sc-knowledge-chunks-...-00002",
    ".sc-knowledge-chunks-...-00003",
    ".sc-knowledge-chunks-...-00004"
  ],
  "created_backings": [
    ".sc-knowledge-chunks-...-00001",
    ".sc-knowledge-chunks-...-00002",
    ".sc-knowledge-chunks-...-00003",
    ".sc-knowledge-chunks-...-00004"
  ],
  "existing_backings": [
    ".sc-knowledge-chunks-...-00000"
  ]
}

backings は、このリクエストに関与するバッキングをリストします。created_backings は、このリクエストによって追加されたバッキングをリストし、existing_backings は、すでに存在していたバッキングをリストします。これらのリストは、必ずしもコレクション内のバッキングの完全なリストを構成するわけではありません。現在のリストを表示するには、次の API を使用してください:

GET /_cat/slice_collection/knowledge-chunks/backings?v

オプション:現在のコレクション設定を表示します。

GET /_slice_collection/knowledge-chunks

後続のスライス割り当てへの影響

count > 1 の場合、事前作成 API は自動的に backing_allocation_strategy を random に変更します。これにより、後続で登録されるスライスは、まだ容量のあるバッキングをランダムに選択します。このポリシーは、このリクエストに関与するすべてのバッキングがすでに存在する場合でも更新されます。前述の GET コレクションリクエストを使用して変更を確認できます。

次の調整はオプションです。ビジネスが引き続き最新のバッキングを優先的に使用する必要がある場合にのみ、事前作成後に更新 API を呼び出してください。ランダム割り当てを使用する場合は、このリクエストをスキップしてください。

POST /_slice_collection/knowledge-chunks/_update
{
  "backing_allocation_strategy": "last"
}

バッチで有効化する場合、ドキュメントをインポートする前に、スライスの登録の説明に従って既知のテナントを準備することをお勧めします。 自動登録が有効になっている場合は、データを直接書き込むこともできます。 事前作成では Backings の準備のみが行われます。 インスタンスへのインデックスノードやクエリノードの追加、または既存のスライスのリバランスは行われません。

リトライと容量計画

  • 同じ count 値を繰り返し使用すると、同じバッキングのセットをチェックして完了するだけです。より小さい count 値を渡しても、余分なバッキングは削除されないため、スケールインには使用できません。

  • リクエストがタイムアウトしたり、接続に失敗したりした後でも、すでに作成されたバッキングが存在する場合があります。最初にリストをクエリし、次に同じ count 値でリトライしてください。

  • この操作は既存のスライスを移行したり、既存のスライスの割り当て結果を変更したりするものではありません。

  • 各バッキングは独立した Elasticsearch インデックスであり、プライマリシャード、レプリカ、およびクラスターメタデータのリソースを消費します。実際のスライス数と容量パラメーターに基づいて必要な数を推定してください。必要以上に多くのバッキングを予約しないでください。

  • レスポンス内のバッキング名は、実行結果を確認するためにのみ使用されます。後続のアプリケーションリクエストのターゲットとして使用しないでください。

    新しく作成されたバッキングは、現在のコレクションマッピングと将来有効な設定を使用します。後続のバッキングに新しいシャード数を使用させたい場合は、まず「コレクションの更新」で説明されているように変更を加え、次にバッキングを事前作成します。

スライスの登録

登録方法を選択する際は、次の表を参照してください。

メソッドシナリオ
書き込み時に自動登録名前空間モードのスライスは、ビジネスの成長に伴って動的に表示され、ビジネスは最初の書き込みの追加レイテンシを許容できます。
1 つのスライスを明示的に登録このシナリオは、auto_create_slice が無効になっている場合、最初に名前を検証する必要がある場合、またはベクタークラスター検索モードのスライスに重心ベクターを登録する必要がある場合に適用されます。
スライスをバッチで登録テナントを有効にしたり、データをバッチでインポートしたり、トラフィックが到着する前に多数の既知のスライスを準備したりします。

スライスの登録

PUT /_slice_collection/knowledge-chunks/slices/tenant-c

この API は master_timeout をサポートしています。レスポンスのサンプル:

{
  "acknowledged": true,
  "errors": false,
  "items": [
    {
      "slice_id": "tenant-c",
      "result": "created",
      "backing_index": ".sc-knowledge-chunks-...-00000"
    }
  ]
}

slice_id はビジネス Slice 名です。 backing_index は内部インデックス名であり、観測およびトラブルシューティングにのみ使用されます。 後続のアプリケーションリクエストの対象として使用しないでください。 ドキュメントの読み取り応答には、ビジネス名とは異なる内部ルーティング識別子が含まれる場合もあります。 詳細については、「リクエストの対象と応答の識別子」をご参照ください。

ベクタークラスター取得モードでは、リクエストボディに重心ベクターも必要です。詳細については、「ベクタークラスター取得リファレンス」をご参照ください。

スライスのバッチ登録

PUT /_slice_collection/knowledge-chunks/slices
{
  "slices": [
    "tenant-d",
    { "slice": "tenant-e" },
    { "slice_id": "tenant-f" }
  ]
}

この API は master_timeout をサポートしています。同じリクエストで 3 つのフォーマットを混在させることができます。1 つのリクエストで最大 20,480 個のスライスを登録でき、リクエスト内で重複した名前は許可されません。

バッチ登録は部分的に成功する場合があります。各項目の result は、created、updated、noop、または failed になります。いずれかの項目が失敗した場合、トップレベルの errors の値は true になります。スライス名が無効な場合 (たとえば、最初または最後の文字が英数字でない、予約済みの値 _all が使用されている、または長さ制限を超えている場合)、API は引き続き HTTP 200 を返し、対応する項目で failed とエラーの原因を報告します。名前に英字、数字、.、_、- を使用し、特殊文字に依存しないことを推奨します。

スライスのクエリ

GET /_slice_collection/{collection}/slices/{slice}

クエリパラメーター:

パラメーターデフォルト値説明
include_doc_countfalseスライス内の現在の検索可能なドキュメント数である docs.count を返すかどうかを指定します。

レスポンスのサンプル:

{
  "slice": "tenant-a",
  "backing_index": ".sc-knowledge-chunks-...-00000",
  "created_at": "2026-08-12T00:00:00.000Z"
}

created_at は、スライスが作成された時刻を UTC ISO 8601 形式で示します。

スライスが存在するかどうかを確認したり、その情報を読み取ったりするだけの場合は、前述のデフォルトリクエストを使用してください。include_doc_count=true は、ドキュメントをカウントするために追加のデータクエリを実行します。多数のスライスの頻繁なポーリングやバッチチェックには使用しないでください。検索可能なドキュメント数を確認する必要がある場合にのみ呼び出してください:

GET /_slice_collection/knowledge-chunks/slices/tenant-a?include_doc_count=true

レスポンスにはさらに以下が含まれます:

{
  "docs": {
    "count": 12500
  }
}

使用上の注意:

  • docs.count は、現在の検索可能なドキュメント数を示します。最近書き込まれたがまだリフレッシュされていないドキュメントは含まれない場合があります。

  • この API は、現在有効なスライスのみをクエリします。コレクションまたはスライスが存在しない場合、またはスライスが削除されている場合は、HTTP 404 が返されます。

  • クエリはスライスを作成しません。最初にスライスを明示的に登録するか、自動登録が有効になっている場合は最初にスライスに書き込みます。

  • この API は、単一の Slice のストレージサイズを提供しません。ストレージ統計を取得するには、Backing CAT またはネイティブの Index Stats API を使用します。詳細については、「Backing CAT および Slice CAT コマンド」をご参照ください。

  • シャードとレプリカはバッキングレベルで設定されます。スライスが実際にアクセスするプライマリシャードを表示するにはスライス CAT を使用し、レプリカ設定を表示するにはバッキング CAT を使用してください。

ページごとのスライス一覧表示

GET /_slice_collection/knowledge-chunks/slices?prefix=tenant-&page_size=100
パラメーターデフォルト値説明
page_size100各ページで返す項目数。有効な値:1 から 10000。
cursorなし前のページのレスポンスにある next_cursor の値。変更せずに渡してください。
prefixなし指定されたテキストで始まる名前のスライスのみを返します。

レスポンスのサンプル:

{
  "slices": [
    { "id": "tenant-a" },
    { "id": "tenant-b" }
  ],
  "next_cursor": "opaque-cursor"
}

次のページが存在しない場合、next_cursor は省略されます。結果はスライス名の昇順で返されます。ページネーション中にスライスが同時に追加または削除された場合、ページ分割された結果は弱い整合性を提供します。ページネーションを続けるときは、同じ prefix を維持してください。

スライスの削除

スライスが削除されると、そのスライスとすべてのドキュメントは元の名前でアクセスできなくなります。同じ名前でスライスを再登録しても、古いデータは回復できません。次のリクエストを実行する前に、ターゲットのビジネススペースを確認してください:

DELETE /_slice_collection/knowledge-chunks/slices/tenant-c

クエリパラメーター:

パラメーターデフォルト値説明
master_timeout30sマスターノードを待機する最大時間。値は有限でなければならず、5 分を超えることはできません。
timeout30s論理的な削除とキャッシュの無効化を待機する最大時間。

成功レスポンスのサンプル:

{
  "acknowledged": true
}

このレスポンスは、元のスライス名がもはやアクセスできないことを示します。古い物理データが完全に削除されたことや、ストレージスペースが解放されたことを示すものではありません。後で同じ名前のスライスを登録できます。新しいデータは、バックグラウンドでクリーンアップ待ちの古いデータから隔離されたままです。アプリケーションは、削除、同じ名前での再作成、および自動登録をトリガーする可能性のある書き込みを調整する必要があります。削除結果が不確かな場合は、まずスライスのライフサイクル状態を確認してください。同じ名前のスライスが再作成されている場合は、元の名前を使用して DELETE をむやみに再送信しないでください。そうしないと、新しいスライスが削除される可能性があります。さらに:

  • スライスが削除された後、スライス名を指定したクエリは、空の結果ではなく HTTP 404 (resource_not_found_exception) を返します。

  • 物理的なクリーンアップが完了する前に、_slice=_all を使用した完全なクエリは、一時的に古いデータを返す可能性があります。特定のスライス名のクエリは、削除された古いデータにアクセスしません。

    1 つのスライスのみを削除する必要がある場合は、この API を使用してください。コレクション全体を削除しないでください。コレクションを削除するには、「コレクションの削除」をご参照ください。

コレクションの削除

この API は、すべてのビジネスデータを廃止する場合や、サンプルデータを削除する場合に適しています。削除すると、Collection の構成とシステム管理データが削除されます。この操作は元に戻すことはできません。1 つのスライスのみを削除する必要がある場合は、スライスの削除を使用してください。

DELETE /_slice_collection/knowledge-chunks

クエリパラメーター:master_timeout と timeout。

成功レスポンスのサンプル:

{
  "acknowledged": true
}
  • {collection} はカンマ区切りの名前をサポートしています。削除する各コレクションを明示的に指定することを推奨します。デフォルトでは、action.destructive_requires_name の安全策により、ワイルドカード * と _all は拒否され、HTTP 400 が返されます。単にサンプルデータを削除するために、このクラスターレベルの安全策を無効にしないでください。

  • コピースライスが RUNNING または CANCELLING 状態の場合、削除リクエストは HTTP 409 を返します。コピーのキャンセルは非同期です。コレクションを削除する前に、completed=true であり、コピーが終端状態に入ったことを確認してください。

  • acknowledged=true は、論理リソースとメタデータの削除が確認されたことを示します。オブジェクトストレージ内の履歴インデックスと Translog ファイルは、バックグラウンドプロセスによって非同期で回収されます。レスポンスが返されたときに物理スペースがすぐに解放されることは保証されません。

コレクションエイリアスの管理

コレクションエイリアスは、アプリケーションに安定したアクセス名を提供し、複数のコレクションを統一的にクエリしたり、書き込みターゲットを切り替えたりするために使用できます。コレクションを作成するときに、aliases フィールドを使用してエイリアスを追加できます。また、標準の Elasticsearch _aliases API を使用して管理することもできます。

シナリオ:

  • バージョン移行:アプリケーションは常に固定のエイリアスにアクセスします。データ準備が完了したら、書き込みターゲットを古いコレクションから新しいコレクションに切り替えます。

  • 複数コレクションのクエリ:同じ slice_strategy を使用する複数のコレクションを 1 つのエイリアスでクエリします。

  • アプリケーションのデカップリング:バージョンや日付を含むコレクション名に直接依存するのではなく、ビジネス設定にエイリアスのみを保存します。

    使用する前に、「コレクションエイリアスのサポート」を確認して、既存のエイリアス設定がサポートされていることを確認してください。

バージョン移行の場合、まずデータ移行を完了し、移行中の増分書き込みを処理し、新しいコレクションのデータが検索可能であることを確認し、アクセスされるスライスをウォームアップします。次に、同じリクエストで、古いコレクションをエイリアスから削除し、新しいコレクションをエイリアスに追加します。エイリアスの更新はアトミックですが、データを自動的にコピーまたは同期するものではありません。次の例では、読み取りおよび書き込みトラフィックを knowledge-chunks-v1 から knowledge-chunks-v2 にアトミックに切り替えます:

POST /_aliases
{
  "actions": [
    {
      "remove": {
        "index": "knowledge-chunks-v1",
        "alias": "knowledge-chunks-current"
      }
    },
    {
      "add": {
        "index": "knowledge-chunks-v2",
        "alias": "knowledge-chunks-current",
        "is_write_index": true
      }
    }
  ]
}

次の例は、バージョン移行ではなく、複数コレクションのクエリ用です。knowledge-chunks-v1 と knowledge-chunks-v2 が両方とも名前空間モードのコレクションであり、2 つのコレクションのデータが重複していないと仮定します。それらを同じエイリアスに追加し、knowledge-chunks-v2 を書き込みターゲットとして設定します。検索クエリは両方のコレクションをクエリします。is_write_index は書き込み場所のみを決定し、クエリスコープを制限しません。

POST /_aliases
{
  "actions": [
    {
      "add": {
        "index": "knowledge-chunks-v1",
        "alias": "knowledge-chunks-current"
      }
    },
    {
      "add": {
        "index": "knowledge-chunks-v2",
        "alias": "knowledge-chunks-current",
        "is_write_index": true
      }
    }
  ]
}

エイリアスの表示:

GET /_alias/knowledge-chunks-current

複数メンバーのエイリアスで欠落している可能性のあるスライスをクエリします:

GET /knowledge-chunks-current/_search?_slice=tenant-a&ignore_missing_slice=true

エイリアスを使用する際は、次の点に注意してください:

  • 複数メンバーのエイリアスを書き込みに使用する場合、正確に 1 つのメンバーが is_write_index=true である必要があります。

  • Search、Count、Bulk などの API は、エイリアスのセマンティクスに従って複数メンバーのエイリアスにアクセスできます。

  • 単一ドキュメントの GET リクエストと MGet リクエストの各項目は、正確に 1 つのコレクションに解決される必要があります。したがって、単一メンバーのエイリアスのみを使用できます。is_write_index は、単一ターゲットの読み取りのためにメンバーを選択しません。

  • エイリアスの更新はアトミックに適用されます。デフォルトでは、remove は少なくとも 1 つの既存のメンバーに一致する場合に成功します。must_exist=true は、各特定のターゲットを厳密に検証します。レスポンスには acknowledged のみが含まれ、アクションごとの結果は含まれません。

  • 複数メンバーのエイリアスをクエリする場合、ターゲットスライスはすべてのメンバーコレクションに存在する必要があります。そうでない場合、HTTP 404 が返されます。欠落している可能性のあるスライスをクエリするには、明示的に ignore_missing_slice=true を含めてください。リクエストはスライスが欠落しているメンバーをスキップし、通常どおり結果を返します。