このガイドでは、Alibaba Cloud Elasticsearch AI Engine Edition インスタンスの作成と接続方法、および Collection、Slice、ベクトル検索、データ管理 API の使用方法について説明します。
ワークフロー
次の表に、アクティベーションから運用までの全体的な流れと、各フェーズに対応するセクションを示します。
フェーズ | 操作 | セクション |
1 事前準備 | AI Engine Edition インスタンスを作成し、ネットワーク、アカウント、インデックスノード、および検索ノードを構成します。インスタンスに接続し、アカウント権限とネットワーク接続を確認します。 | インスタンスの準備 |
2 モード選択 | 名前空間モードとベクトルクラスターリコールモードのいずれかを選択します。モードは作成後に変更できません。 | Collection モードの選択 |
3 はじめに | 選択したモードで Collection を作成し、Slice を計画して、書き込みおよびクエリ操作を完了します。 | クイックスタート |
4 管理 | Collection の容量パラメーターおよびマッピングを調整します。Slice を登録、一覧表示、削除します。 | Collections および Slices の管理 |
5 統合 | アプリケーションとの統合:バッチ書き込み、Refresh 可視性の制御、クエリ範囲の指定、必要に応じて Reindex を実行します。 | データの書き込み、読み取り、クエリ |
6 機能強化 | 必要に応じて、キャッシュウォーミング、DiskBBQ ベクトルインデックス、Collection Alias、Copy Slice を使用します。 | 高度な機能 |
7 運用 | クラスターモニタリングおよび CAT API を通じてクラスター状態を監視し、ロール権限を構成し、未使用の Collections をクリーンアップします。 | 運用と権限 |
リファレンス | 従来の Elasticsearch との違い、使用制限、API 一覧を確認します。 | リファレンス |
例では、Kibana Dev Tools がサポートするコンソール構文を使用しています。他の HTTP クライアントを使用する場合は、インスタンスアドレス、認証、および必要な TLS パラメーターを構成してください。
このガイドは AI Engine Edition 9.99.0 に適用されます。このガイドに記載されているリクエストパス、パラメーター、および使用制限は、このバージョンに基づいています。他のバージョンでは異なる場合があります。コンソールのインスタンスに表示されているバージョンに一致するドキュメントを使用してください。
例では、クエリの高可用性の基本要件を満たすために、index.number_of_replicas を 2 に設定しています。プライマリシャード数、ベクトル次元、その他の容量パラメーターは、API の説明目的のみです。本番環境の構成は、容量評価およびストレステストの結果に基づいて決定してください。
このガイドでは、アプリケーション開発および日常的な管理に必要な一般的な API のみを取り上げており、すべての API を網羅しているわけではありません。製品のポジショニング、コアアーキテクチャ、製品の利点、一般的なシナリオ、およびパフォーマンスリファレンスについては、「機能概要」をご参照ください。
インスタンスの準備
前提条件
Alibaba Cloud Elasticsearch サービスを有効化しており、AI Engine Edition インスタンスを作成済みまたは作成予定です。
インスタンスの VPC、vSwitch、IP アドレスホワイトリスト、およびクライアントネットワークを計画済みです。
ビジネスデータに基づいてマッピングを設計済みです。ベクトル検索のシナリオでは、ベクトルモデル、次元、類似性メトリック、および更新方法も決定する必要があります。
ご利用のアカウントに必要な権限が付与されています。Collection 管理には通常
manage、データ読み取りにはread、データ書き込みにはwriteが必要です。詳細については、「Collection 権限」をご参照ください。
インスタンスの作成
購入項目およびページレイアウトは、リージョン、バージョン、製品フェーズによって変更される場合があります。以下の手順は、実際のコンソールページに基づいています。AI Engine Edition でサポートされているリージョンおよびゾーンは、購入ページの実際の購入可能項目に基づいています。
Alibaba Cloud Elasticsearch コンソールにログインし、インスタンス作成ページに移動します。
AI Engine Edition を選択し、コンソールで提供されているリージョンおよびゾーンを選択します。このインスタンスタイプの Elasticsearch バージョンは固定されています。作成ページにはバージョン 9.x が表示され、これは変更できません。インスタンス作成後、インスタンス一覧またはインスタンス詳細ページで具体的なバージョン番号を確認できます。
書き込みワークロードに基づいて インデックスノード を構成し、クエリワークロードに基づいて 検索ノード を構成します。その他のオプションコンポーネントは、コンソールに基づいています。
VPC、vSwitch、ユーザー名、パスワードを構成します。IP アドレスホワイトリストは作成ページでは構成されません。インスタンス作成後、インスタンスのセキュリティ構成ページで構成します。
構成とコストを確認し、インスタンスを作成します。インスタンスステータスが 利用可能 に変更されたら、Elasticsearch および Kibana のアクセスアドレスを記録します。
ノードスペック、最小ノード数、専用マスターノード構成は、購入ページの現在の購入可能項目に基づいています。
ノード数およびスペックは、書き込みスループット、クエリ同時実行数、ベクトルインデックス構築、アクティブデータセット、およびキャッシュ要件に基づいて決定する必要があります。ノード調整および課金ルールの具体的な操作は、コンソールに基づいています。
インスタンスへの接続
Kibana Dev Tools、Elasticsearch 互換クライアント、または任意の HTTP クライアントを使用して、インスタンスにアクセスできます。インスタンスアドレス、ネットワークホワイトリスト、証明書、および認証方式は、インスタンス詳細ページに基づいています。
AI Engine Edition のアクセスドメイン名はネットワークタイプによって異なります。ドメイン名は、リクエストが最初に接続するノードロールを決定するだけであり、リクエストタイプを制限しません。クラスターは、実際に処理を行うノードロールにリクエストを転送します。
ネットワークタイプ | ドメイン名 | エントリノード | リクエスト処理 |
プライベートネットワーク | コンソールに表示されるデフォルトの Elasticsearch プライベートネットワークドメイン名 | 検索ノード | 読み取りおよび書き込みをサポートします。書き込みリクエストは処理のためにインデックスノードに転送されます。 |
プライベートネットワーク |
| インデックスノード | 読み取りおよび書き込みをサポートします。クエリリクエストは処理のために検索ノードに転送されます。 |
パブリックネットワーク | コンソールに表示されるデフォルトの Elasticsearch パブリックネットワークドメイン名 | 検索ノード | パブリックネットワークアクセスにはこのドメイン名のみが提供されます。読み取りおよび書き込みをサポートします。書き込みリクエストは処理のためにインデックスノードに転送されます。 |
プライベートネットワーク経由でインスタンスにアクセスする場合、両方のドメイン名が読み取りおよび書き込み操作をサポートします。本番環境でのアクセスでは、検索ノードのネットワーク帯域幅消費を削減するために、クエリリクエストにはデフォルトのプライベートネットワークドメイン名を、書き込みリクエストにはインデックスノードのプライベートネットワークドメイン名を使用してください。これは、Bulk 書き込み、大きな結果を返すクエリ、または高同時実行シナリオで特に重要です。パブリックネットワーク経由でインスタンスにアクセスする場合は、読み取りおよび書き込みリクエストの両方にデフォルトのパブリックネットワークドメイン名を使用してください。
たとえば、インスタンス ID が es-cn-xxx の場合、インデックスノードのプライベートネットワークドメイン名は es-cn-xxx-index.elasticsearch.aliyuncs.com です。プロトコル、ポート、およびネットワークアクセス方法は、コンソールに表示されている情報に基づいています。
インスタンスはデフォルトで HTTP を使用します。コンソールで HTTPS を有効化した場合は、クライアント接続プロトコルを HTTPS に切り替えてください。
Kibana Dev Tools で次のリクエストを実行して、接続を確認します。
GET /AI Engine Edition 9.99.0 は、Elasticsearch カーネルバージョン 9.5.0 に対応しています。そのため、このリクエストによって返される version.number はカーネルバージョン番号であり、コンソールに表示されている 9.99.0 とは異なります。実際の Elasticsearch バージョンは、クラスター API 応答に基づいています。カスタムプラグインをインストールする場合は、AI Engine Edition に一致する 9.99.0 バージョン番号を使用してください。
cURL を使用する場合は、インスタンスアドレスと認証情報を置き換えてください。本番環境では、スクリプトやコマンド履歴にパスワードをプレーンテキストで保存しないでください。
curl --user '{username}:{password}' 'http://{elasticsearch-endpoint}/'公式クライアントを使用する場合は、ご利用のインスタンスバージョンの API 互換性ドキュメントに基づいてクライアントバージョンを選択し、クライアント接続プールを再利用してください。リクエストごとに新しいクライアントを作成しないでください。
共通規則
このガイドのすべての Collection、Slice、およびドキュメント API に、以下の規則が適用されます。後のセクションでは、これらの詳細を繰り返さずに参照します。
アクセス規則
アプリケーションは常に Collection 名または Collection Alias を介してデータにアクセスします。
名前空間モードでは、書き込みおよびクエリは
_sliceを介して名前空間を指定します。_sliceを指定しないクエリは失敗します。すべての Slices をクエリするには、明示的に_slice=_allを使用します。一部のドキュメントおよびクエリ API は、代替としてroutingもサポートしています。サポート範囲の詳細については、「ルーティング互換パラメーター」をご参照ください。ベクトルクラスターリコールモードでは、書き込みは
_sliceまたはrouting_fieldを介してベクトルクラスターを指定します。KNN クエリは、クエリベクトルに基づいて複数の候補 Slices を自動的に選択できます。候補 Slices を自動的に選択できないクエリでは、明示的な_slice、または互換 API ではroutingが必要です。Slices はデータを整理し、クエリ範囲を制限するために使用されます。アカウント権限の境界ではありません。テナント権限を分離するには、アプリケーションレベルの認証と製品がサポートするセキュリティメカニズムを組み合わせてください。
.sc-*バッキングインデックス (Backing Index) を保存または直接アクセスしないでください。これらの名前およびライフサイクルはシステムによって管理されています。一部の API 応答(書き込み応答の_indexや Slice 登録応答のbacking_indexなど)は、これらの名前を観測およびトラブルシューティング目的でのみ返します。これらを後続のアプリケーションリクエストのターゲットとして使用しないでください。ロール権限を構成する際は、.sc-<collection>-*ワイルドカードパターンを使用してください。詳細については、「Collection 権限」をご参照ください。
ルーティング互換パラメーター
このガイドに記載されている Collection または Collection Alias のドキュメント読み取り/書き込みおよびクエリ API を使用する場合、標準の Elasticsearch routing パラメーターを _slice の代わりに使用できます。これは既存クライアントとの互換性のためです。新規アプリケーションでは、より意味的に明確な _slice を使用してください。同じ URL または同じ Bulk または MGet アイテムで、両方のパラメーターを同時に指定することはできません。
この互換性は、Collection および Slice 管理、キャッシュウォーミング、Copy Slice、CAT、明示的な Refresh、または Reindex には適用されません。Reindex では source._slice および dest._slice を使用する必要があります。routing_field は、ドキュメントフィールドから Slice を導出するための構成であり、routing のエイリアスではありません。
一般的な API 規則
JSON リクエストは
Content-Type: application/jsonを使用します。Bulk および Multi Search はContent-Type: application/x-ndjsonを使用し、リクエストボディの末尾に改行が必要です。Bulk、Multi Search、およびバッチ管理 API は、アイテムレベルの失敗が発生する可能性があります。アプリケーションは HTTP ステータスコードだけでなく、単一およびバッチ Slice 登録 API もアイテムレベルのエラーを使用することに注意してください。全体のリクエストは HTTP
200を返しますが、トップレベルのerrorsフィールドがtrueになる場合があります。各items[].resultを個別に確認してください。HTTP
429は、サーバーが現在リクエストを拒否していることを示します。クライアントは上限付きの指数バックオフを使用し、リトライに適した操作のみをリトライする必要があります。接続タイムアウトまたは HTTP
5xxは、書き込みが確実に発生しなかったことを意味しません。リトライする前に、安定したドキュメント ID または他のべき等メカニズムで確認してください。URL を介して多数の
_slice値を渡す場合、HTTP リクエスト行の最大長が 4096 バイトであることに注意してください。Slice 名が長い場合、Slice 数の制限に達する前にtoo_long_http_line_exceptionがトリガーされる可能性があります。Collection 管理 API では、以下のクエリパラメーターが一般的に使用されます。具体的なサポート範囲は、各 API の説明に基づいています。
パラメーター | 一般的なデフォルト値 | 説明 |
|
| マスターノードがリクエストを処理するまで待機する最大時間。 |
|
| 確認または現在の結果を待機する最大時間。 |
acknowledged=false を返す管理リクエストまたはタイムアウトするリクエストは、サーバー側の操作がロールバックされたことを意味しません。リトライする前に、現在のリソースステータスを確認してください。
Collection モードの選択
モード比較
Collection には、名前空間モードとベクトルクラスターリコールモードがあります。どちらか一方のモードを選択する必要があります。モードは slice_strategy 作成パラメーターによって決定され、作成後に変更できません。これにより、Slices のビジネス上の意味、登録方法、および書き込み・クエリルーティングに影響します。
項目 | 名前空間モード | ベクトルクラスターリコールモード |
|
|
|
Slice の意味 | ナレッジベース、コードリポジトリ、エージェント、またはテナントなどのビジネス識別子で識別される名前空間。 | オフラインクラスタリングから取得されたベクトルクラスター。 |
前提条件 | アプリケーションはリクエスト送信前にアクセスする名前空間を把握しています。 | アプリケーションはオフラインでベクトルクラスターおよびその重心ベクトルを生成および継続的に維持できます。 |
書き込みルーティング |
|
|
クエリルーティング |
| KNN クエリは、クエリベクトルに基づいて複数の候補 Slices を自動的に選択およびクエリできます。 |
|
|
|
適用シナリオ | テナント ID、ナレッジベース ID、コードリポジトリ ID などのビジネス識別子に基づいてクエリ範囲を事前に決定できます。たとえば、マルチテナント RAG では、現在のテナントのナレッジベースのみを検索する必要があります。 | クエリ時にクエリベクトルのみが利用可能で、ターゲットデータ範囲を事前に決定できません。データはオフラインでクラスタリングされており、大規模なベクトルデータベースから最も関連性の高いベクトルクラスターを自動的にリコールする必要があります。たとえば、全製品カタログで類似製品をクエリします。 |
非適用シナリオ | クエリ範囲を事前に決定できず、システムがクエリベクトルに基づいて関連するベクトルクラスターを自動的に発見する必要があります。 | 信頼できるクラスター重心を提供できない、データ量が小さい、またはすべてのベクトルデータをカバーする必要があるクエリ。 |
ベクトルクラスターリコールモードは、ベクトルクラスター重心に基づいて複数の候補 Slices を自動的に選択し、これらの Slices に並列でクエリを送信します。これは、ベクトルを格納するためにこのモードを使用する必要があることを意味しません。名前空間モードも dense_vector、KNN、および DiskBBQ をサポートしています。ビジネスで関連するベクトルクラスターを自動的にリコールする必要があり、かつクラスター重心のメンテナンスおよび取得率評価が完了している場合にのみ、ベクトルクラスターリコールモードを選択してください。
決定ガイド
Collection モードは作成時に決定され、後から変更できません。モードを切り替えるには、新しい Collection を作成し、Reindex を使用してデータを移行する必要があります。
以下のガイドを使用して、2 つのモードのいずれかを選択してください。
デフォルトの推奨 — アプリケーションがクエリ前にビジネス識別子(テナント ID、ナレッジベース ID、コードリポジトリ ID)からクエリ範囲を決定できる場合は、名前空間モード (
exact) を選択してください。以下のすべてが該当する場合にのみ、ベクトルクラスターリコールモードを選択してください:
ビジネスでオフラインでクラスター重心を生成および継続的に維持できます。
データ量および Slices 数が十分に大きく、クエリ範囲を絞ることで実質的なメリットがあります。
ビジネスで KNN クエリを実行する前に候補クラスターを選択でき、取得率テストを通じて適切な候補 Slices 数を決定しています。
以下の場合はベクトルクラスターリコールモードを使用しないでください:
データに安定したクラスタリング構造がなく、信頼できる重心ベクトルを提供できません。
データ量または Slices 数が小さく、直接クエリのコストがすでに許容範囲内です。
クエリで必ずすべてのベクトルデータをカバーする必要があり、候補クラスター選択による取得範囲の変更が許容できません。この場合は、名前空間モードを使用し、
_sliceクエリ範囲を明示的に指定してください。
名前空間モードを選択した後は、「名前空間モード:Slice による DiskBBQ ベクトル検索」をご参照ください。ベクトルクラスターリコールモードを選択した後は、「ベクトルクラスターリコールモード:自動候補 Slice 選択」をご参照ください。このガイドの他の Collection 管理、データ API、キャッシュウォーミング、Alias、Copy Slice、および監視機能は、特に明記されていない限り、両方のモードに適用されます。
クエリレプリカおよび高可用性
両方のモードのクエリは、検索ノード上のレプリカシャードによって処理されます。index.number_of_replicas は少なくとも 1 に設定する必要があります。そうでない場合、クエリを処理できません。1 に設定しても、基本的なクエリ要件を満たすだけで、クエリの高可用性は提供されません。本番環境では、少なくとも 2 に設定し、少なくとも 2 つの検索ノードを構成して、単一の検索ノードが障害発生時でもクエリを処理できるようにしてください。
クイックスタート
名前空間モード:Slice による DiskBBQ ベクトル検索
エンタープライズナレッジベースプラットフォームは、複数のテナント向けに検索拡張生成 (RAG) サービスを提供します。アプリケーションがテナント認証を完了すると、現在のテナント ID を決定できます。ユーザーが質問を送信すると、アプリケーションはそのテナントのナレッジベースからセマンティクス的に関連するコンテンツセグメントのみをリコールする必要があります。
このシナリオでは、リクエスト送信前にクエリ範囲を決定できるため、名前空間モードに適しています。この例では、knowledge-chunks という名前の Collection を作成し、各テナントを Slice として使用します。アプリケーションは _slice を介してテナントナレッジベースを指定し、その後選択した Slice 内で DiskBBQ を使用して KNN を実行します。Slices はデータを整理し、クエリ範囲を制限するために使用されます。テナント認証は引き続きアプリケーションまたはサポートされている Elasticsearch セキュリティメカニズムによって処理されます。
ステップ 1:名前空間モード Collection の作成
PUT /_slice_collection/knowledge-chunks
{
"settings": {
"index.number_of_shards": 2,
"index.number_of_replicas": 2
},
"mappings": {
"properties": {
"tenant_id": { "type": "keyword" },
"document_id": { "type": "keyword" },
"title": { "type": "text" },
"content": { "type": "text" },
"category": { "type": "keyword" },
"updated_at": { "type": "date" },
"embedding": {
"type": "dense_vector",
"dims": 4,
"index": true,
"similarity": "cosine",
"index_options": {
"type": "bbq_disk"
}
}
}
}
}次の結果が返されます。acknowledged が true であることは、Collection メタデータが作成されたことを示します。
{
"acknowledged": true
}exact はデフォルト戦略であり、auto_create_slice はデフォルトで有効になっています。そのため、存在しない Slice に初めて書き込むと、登録 API を事前に呼び出すことなく、システムが自動的に Slice を登録します。
ステップ 2:異なる Slices へのデータ書き込み
tenant-a にナレッジベースコンテンツセグメントを書き込みます。
PUT /knowledge-chunks/_doc/chunk-1001?_slice=tenant-a
{
"tenant_id": "tenant-a",
"document_id": "doc-refund-policy",
"title": "返金および返品ポリシー",
"content": "注文完了後 7 日以内に、重複購入の返金をリクエストできます。",
"category": "アフターサービス",
"updated_at": "2026-07-30T10:00:00Z",
"embedding": [0.82, 0.10, 0.05, 0.03]
}tenant-b に別のナレッジベースコンテンツセグメントを書き込みます。
PUT /knowledge-chunks/_doc/chunk-1002?_slice=tenant-b
{
"tenant_id": "tenant-b",
"document_id": "doc-shipping-status",
"title": "配送ステータスの確認",
"content": "注文詳細ページの物流情報を開いて、最新の配信ステータスを確認できます。",
"category": "配送",
"updated_at": "2026-07-30T10:01:00Z",
"embedding": [0.12, 0.78, 0.06, 0.04]
}ドキュメント _id は、同じ Slice 内で一意である必要があります。同じ _id が異なる Slices に出現しても問題ありません。
ステップ 3:データの読み取りおよび Slice 内でのベクトル検索
tenant-a の指定されたドキュメントを読み取ります。
GET /knowledge-chunks/_doc/chunk-1001?_slice=tenant-adense_vector フィールドは、デフォルトで返される _source に含まれません。ベクトル値を返すには、明示的に _source_includes を指定してください。たとえば、GET /knowledge-chunks/_doc/chunk-1001?_slice=tenant-a&_source_includes=embedding です。返される値は float32 精度であり、書き込まれた 10 進数リテラルとわずかに異なる場合があります。
ベクトルクエリは、データが Refresh されていることに依存します。データ書き込み後、次のクエリを実行する前に、少なくとも 1 回の自動 Refresh サイクルを待機してください。GET /knowledge-chunks/_settings を使用して現在の自動 Refresh 間隔を確認し、index.refresh_interval の値を表示できます。
tenant-a のみで DiskBBQ KNN クエリを実行します。
POST /knowledge-chunks/_search?_slice=tenant-a
{
"knn": {
"field": "embedding",
"query_vector": [0.80, 0.12, 0.05, 0.03],
"k": 10,
"num_candidates": 100
},
"_source": ["document_id", "title", "content"]
}このリクエストでは、アプリケーションが _slice=tenant-a を介して Slice を指定しています。DiskBBQ は選択した Slice 内でのみベクトル検索を実行し、クエリベクトルに基づいて他の Slices を自動的に選択しません。これが名前空間モードとベクトルクラスターリコールモードの主な違いです。
複数 Slice および全範囲クエリの構文および使用制限については、「クエリ範囲の指定」をご参照ください。
ステップ 4:バッチ書き込み
Bulk リクエストの各アイテムは、独自の _slice をアクションメタデータで指定できます。
POST /_bulk
{ "index": { "_index": "knowledge-chunks", "_id": "chunk-1003", "_slice": "tenant-a" } }
{ "tenant_id": "tenant-a", "document_id": "doc-change-address", "title": "配送先住所の変更", "content": "注文が発送される前に、注文詳細ページで配送先住所を変更できます。", "category": "注文", "updated_at": "2026-07-30T10:02:00Z", "embedding": [0.75, 0.16, 0.06, 0.03] }
{ "index": { "_index": "knowledge-chunks", "_id": "chunk-1004", "_slice": "tenant-b" } }
{ "tenant_id": "tenant-b", "document_id": "doc-invoice", "title": "電子請求書のリクエスト", "content": "注文完了後、請求書管理ページで電子請求書をリクエストできます。", "category": "課金", "updated_at": "2026-07-30T10:03:00Z", "embedding": [0.18, 0.70, 0.08, 0.04] }Bulk リクエストは部分的に成功する可能性があります。呼び出し元は、トップレベルの errors フィールドおよび各アイテムの result または error を確認する必要があります。
書き込まれたばかりのドキュメントは、クエリ結果または CAT ドキュメントカウントにまだ表示されない場合があります。すぐに確認するには、少なくとも 1 回の自動 Refresh サイクルを待機してください。
ステップ 5:Collection および Slices の確認
Collection の全体的なステータスを表示します。
GET /_cat/slice_collection/knowledge-chunks?v各 Slice のバッキングインデックスおよびドキュメント数を表示します。
GET /_cat/slice_collection/knowledge-chunks/slices?v完全な Slice リストを構造化およびページネーションされた形式で取得するには、Slice 一覧 API を使用します。
GET /_slice_collection/knowledge-chunks/slices?page_size=100応答例:
{
"slices": [
{ "id": "tenant-a" },
{ "id": "tenant-b" }
]
}応答に next_cursor が含まれている場合、それをそのまま次のリクエストに渡します。
GET /_slice_collection/knowledge-chunks/slices?page_size=100&cursor={next_cursor}成功の確認およびクリーンアップ
成功の兆候 — Slice 一覧応答に
tenant-aおよびtenant-bの両方が含まれています。CAT Slice 出力は、各 Slice のdocs.countが少なくとも1であることを示しています。ステップ 3 の DiskBBQ KNN リクエストは、期待される_sourceフィールドを持つヒットを返します。一般的な失敗ポイント — 書き込み直後に KNN 応答が空の
hits配列を返す場合、データがまだ Refresh されていない可能性があります。少なくとも 1 回のindex.refresh_intervalサイクルを待つか、書き込み時にrefresh=wait_forを使用してください。サンプルデータのクリーンアップ — サンプル Collection を削除するには、「Collection の削除」をご参照ください。
ベクトルクラスターリコールモード:自動候補 Slice 選択
EC 検索プラットフォームは大規模な製品ベクトルデータベースを維持しており、オフラインクラスタリングを通じて製品を数千のベクトルクラスターに分割しています。ユーザーが類似製品クエリを開始すると、アプリケーションにはクエリベクトルしかなく、ターゲットクラスターを事前に決定できません。データ量が増加するにつれて、毎回すべての製品データをクエリすると、クエリ範囲およびリソースオーバーヘッドが増大します。
このシナリオはベクトルクラスターリコールモードに適しています。各 Slice はベクトルクラスターに対応し、そのクラスターの重心ベクトルが登録されます。KNN クエリを実行すると、システムはまずクエリベクトルと各クラスター重心との類似性を計算し、最も関連性の高い候補 Slices を自動的に選択し、その後これらの Slices 内で DiskBBQ 検索を並列実行することで、クエリ範囲を絞ります。
Collections はクラスター重心をトレーニングせず、ドキュメントベクトルに基づいてターゲット Slice を自動的に決定しません。アプリケーションは重心ベクトルを事前に計算および登録する必要があります。
このモードを使用するタイミングおよび回避するタイミングについては、「決定ガイド」をご参照ください。
ステップ 1:ベクトルクラスターリコールモード Collection の作成
PUT /_slice_collection/products
{
"slice_strategy": "vector_cluster",
"auto_create_slice": false,
"settings": {
"index.number_of_shards": 2,
"index.number_of_replicas": 2
},
"mappings": {
"properties": {
"cluster_id": { "type": "keyword" },
"name": { "type": "keyword" },
"embedding": {
"type": "dense_vector",
"dims": 2,
"index": true,
"similarity": "cosine",
"index_options": {
"type": "bbq_disk"
}
}
}
},
"config": {
"routing_field": "cluster_id",
"vector_dims": 2,
"default_query_vector_path": "knn.query_vector",
"default_query_slice_count": 128,
"max_query_slice_count": 512
}
}
| 必須 | 説明 |
| いいえ | 書き込まれたドキュメントのトップレベルフィールドから Slice を読み取ります。 |
| はい | Slice 重心ベクトルの次元。有効値: |
| はい | リクエスト内のクエリベクトルのパス。サポートされる値: |
| いいえ | 候補 Slices のデフォルト数。デフォルト値: |
| いいえ | 単一クエリで許可される候補 Slices の最大数。デフォルト値: |
名前空間モード (exact) は、空でない config を受け付けません。そうでない場合、HTTP 400 が返されます。
ステップ 2:Slice 重心ベクトルの登録
単一のベクトルクラスター重心を登録します。
PUT /_slice_collection/products/slices/cluster-a
{
"vector": [0.9, 0.1]
}オフラインクラスタリングタスクは通常、複数のベクトルクラスター重心を同時に生成します。バッチ API を使用して一度に登録できます。
PUT /_slice_collection/products/slices
{
"slices": [
{
"slice_id": "cluster-b",
"vector": [0.1, 0.9]
},
{
"slice_id": "cluster-c",
"vector": [0.6, 0.4]
}
]
}バッチ API は、一度に最大 20480 個のユニークな名前の Slices を登録できます。
単一登録 API およびバッチ登録 API の両方がアイテムレベルのエラーを使用します。重心ベクトル次元が config.vector_dims と一致しない場合でも、リクエストは HTTP 200 を返します。登録が成功したかどうかを判断するには、トップレベルの errors および各 items 要素の result を確認してください。HTTP リクエストが成功しても、すべてのベクトルクラスターが登録されたとは限りません。
各重心ベクトルの次元は config.vector_dims と一致する必要があります。重心ベクトルを持たない Slice は明示的にアクセスできますが、自動候補 Slice 選択には参加しません。
ステップ 3:ベクトルデータの書き込み
この例では routing_field=cluster_id を構成しているため、システムはドキュメントのトップレベルフィールドから Slice を読み取ることができ、_slice を要求しません。
PUT /products/_doc/product-1
{
"cluster_id": "cluster-a",
"name": "example-product",
"embedding": [0.92, 0.08]
}_slice=cluster-a を明示的に指定することもできます。または、互換 API では routing=cluster-a を使用できます。Slice を明示的に指定する場合、その値はドキュメント内の routing_field フィールドの値(この例では cluster_id)と一致する必要があります。そうでない場合、HTTP 400 が返されます。routing_field が構成されている場合、スクリプト更新はサポートされていません。
ステップ 4:自動候補 Slice 選択
データ書き込み後、次のクエリを実行する前に、少なくとも 1 回の自動 Refresh サイクルを待機してください。
POST /products/_search?query_slice_count=64
{
"knn": {
"field": "embedding",
"query_vector": [0.91, 0.09],
"k": 10,
"num_candidates": 100
}
}自動候補 Slice 選択のパラメーター:
パラメーター | 説明 |
| このクエリで選択する候補 Slices の上限。省略または |
| Collection のデフォルトクエリベクトルパスを上書きします。サポートされる値: |
query_slice_count は max_query_slice_count を超えることはできません。そうでない場合、HTTP 400 が返されます。
現在、自動候補 Slice 選択では、リクエストボディ内のインライン query_vector のみがサポートされています。Count API は自動候補 Slice 選択を行いません。_slice を明示的に指定する必要があります。
成功の確認およびクリーンアップ
成功の兆候 — KNN 応答は類似性スコアでソートされた
hitsを返します。登録されたクラスター重心はGET /_slice_collection/products/slicesの応答に表示されます。一般的な失敗ポイント — KNN 応答が空の場合、
refresh_intervalが経過し、クエリベクトル次元がconfig.vector_dimsと一致していることを確認してください。登録が HTTP200を返しても Slice が表示されない場合、items[].resultのfailedエントリおよび関連するエラー理由を確認してください。サンプルデータのクリーンアップ — サンプル Collection を削除するには、「Collection の削除」をご参照ください。
Collections および Slices の管理
このセクションは、新しい論理データセットの作成、または後続の Slices の容量およびバッキング割り当て方法の調整に適用されます。容量パラメーターは新しい Slices の割り当てを決定しますが、既存データの再バランスは行いません。
作成パラメーター
Collection を作成する API は次のとおりです。
PUT /_slice_collection/{collection}クエリパラメーター:
パラメーター | 説明 |
| マスターノードがリクエストを処理するまで待機する最大時間。 |
| 作成確認を待機する最大時間。 |
リクエストボディパラメーターは次のとおりです。
パラメーター | デフォルト値 | 説明 |
|
| Collection モード。名前空間モード ( |
|
| 書き込みリクエストが存在しない Slice に遭遇した場合に、Slice を自動的に登録するかどうか。 |
|
| 各プライマリシャードが新しい Slices を受け入れるためのソフト容量制限。 |
|
| 各プライマリシャードが新しい Slices を受け入れるためのソフトストレージしきい値。 |
|
| 新しい Slices のバッキング選択戦略。 |
|
| バッキングインデックスで使用される Elasticsearch インデックス設定。 |
|
| Collection のマッピング。これはすべてのバッキングインデックスに均一に適用されます。 |
|
| Collection とともに作成する Collection Alias。 |
| なし | ベクトルクラスターリコールモード ( |
バッキングインデックスに N 個のプライマリシャードがある場合、カウント制限のみに基づいて受け入れ可能な Slices の最大数は N × max_slices_per_shard です。max_slices_per_shard および max_storage_per_shard は、後続の新しい Slices がこのバッキングに割り当てられ続けるかどうかのみを決定します。
いずれかのしきい値に達した後、システムは新しい Slices をホストするために別のバッキングを選択または作成します。
既存の Slices は引き続き書き込みを受け入れることができます。
しきい値を変更しても、既存の Slices の移行や既存データの再バランスは行われません。
ほとんどのシナリオでは、デフォルトの
lastで十分です。複数のバッキングが同時に新しい Slices を受け入れることができ、新しく登録された Slices をランダムに分散させたい場合にのみ、randomを使用してください。
Collection の表示
単一の Collection を表示します。
GET /_slice_collection/knowledge-chunksすべての Collections を表示します。
GET /_slice_collectionこの API は master_timeout クエリパラメーターをサポートします。
{collection} はカンマ区切りの名前およびワイルドカードをサポートします。存在しない正確な名前は HTTP 404 を返します。マッチするものがないワイルドカードは空のオブジェクトを返します。
応答例:
{
"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,
"aliases": {}
}
}
}応答には、システム管理の識別子および generation フィールドが含まれる場合があります。アプリケーションはこれらを不透明な情報として扱い、バッキング名の構築やビジネスロジックの実装に使用しないでください。
Collection の更新
この API は、後続に登録される Slices の割り当て戦略を調整するために使用され、既存の Slices を移動しません。
変更可能な構成を更新します。
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
}
}クエリパラメーター:
パラメーター | デフォルト値 | 説明 |
|
| マスターノードがリクエストを処理するのを待ちます。 |
|
| 更新確認を待ちます。 |
|
|
|
更新可能なフィールドには以下が含まれます。
max_slices_per_shardmax_storage_per_shardbacking_allocation_strategyauto_create_slicesettings内の許可された将来のみの設定将来のみの設定は、その後に作成されたバッキングにのみ影響し、既存のバッキングを変更しません。デフォルトで許可されている設定は次のとおりです。
index.number_of_shardsindex.routing_partition_sizeindex.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 は更新がロールバックされたことを意味するのではなく、確認がタイムアウトしたことを示します。
マッピングおよび動的設定の更新
Collection 名を使用してマッピングを更新します。
PUT /knowledge-chunks/_mapping
{
"properties": {
"channel": { "type": "keyword" }
}
}Collection 名を使用して動的インデックス設定を更新します。
PUT /knowledge-chunks/_settings
{
"index.refresh_interval": "5s"
}マッピングおよび動的インデックス設定は、すべての現在のバッキングに適用され、後続のバッキングの統一構成となります。個々のバッキングインデックスを変更しないでください。
Slice の登録
Slice 登録方法を選択する際は、次の表を参照してください。
方法 | 適用シナリオ |
書き込み時の自動登録 | 名前空間モード ( |
単一 Slice の明示的登録 |
|
バッチ登録 | バッチテナントプロビジョニング、バッチデータインポート、またはトラフィック到着前に多数の既知の Slices を準備する場合。 |
auto_create_slice=false の場合、または書き込み前にリソース準備を完了したい場合は、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"
}
]
}backing_index は観測およびトラブルシューティング目的のみで使用され、後続のアプリケーションリクエストのターゲットとして使用しないでください。
一度に最大 20480 個のユニークな名前の Slices を登録します。
PUT /_slice_collection/knowledge-chunks/slices
{
"slices": [
"tenant-d",
{ "slice": "tenant-e" },
{ "slice_id": "tenant-f" }
]
}この API は master_timeout クエリパラメーターをサポートします。3 つの形式は同じリクエスト内で混在できます。
バッチ登録は部分的に成功する可能性があります。各アイテムの result は created、updated、noop、または failed になる場合があります。いずれかのアイテムが失敗すると、トップレベルの errors は true になります。Slice 名が無効(たとえば、: を含む、英数字以外の文字で始まる、予約値 _all を使用する、または長さ制限を超える)の場合、登録 API は HTTP 200 を返し、対応するアイテムで failed およびエラー理由を提供します。
ページネーションによる Slice の一覧表示
GET /_slice_collection/knowledge-chunks/slices?prefix=tenant-&page_size=100パラメーター | デフォルト値 | 説明 |
|
| 1 ページあたりの結果数。有効値: |
| なし | 前のページ応答の |
| なし | 指定されたテキストで始まる名前を持つ Slices のみを返します。 |
結果は Slice 名の昇順で返されます。ページネーション中に Slices が同時に追加または削除された場合、結果は弱整合性になります。ページネーションを続ける際は、同じ prefix を維持してください。
Slice の削除
DELETE /_slice_collection/knowledge-chunks/slices/tenant-cクエリパラメーター:
パラメーター | 説明 |
| マスターノードがリクエストを処理するまで待機する最大時間。 |
| 削除確認を待機する最大時間。 |
成功応答:
{
"acknowledged": true
}Slice 削除後、同じ名前の Slice を再登録できます。新しいデータは、バックグラウンドでクリーンアップが完了するまでの間、古いデータから分離されます。注意点:
Slice 削除後、Slice 名を指定するクエリは空の結果ではなく、HTTP
404(resource_not_found_exception) を返します。_slice=_allを使用した全範囲クエリは、物理クリーンアップが完了する前に一時的に古いデータを返す場合があります。削除応答はストレージスペースが解放されたことを示しません。
データの書き込み、読み取り、クエリ
データの書き込みおよび読み取り
Collections は Elasticsearch 標準ドキュメント API を再利用し、_slice を介して名前空間またはベクトルクラスターを指定します。一般的な API は次のとおりです。
アクセス方法 | 適用シナリオ |
単一ドキュメント API | ドキュメント ID および Slice がわかっている場合のリアルタイム CRUD 操作。 |
Bulk | ログまたはナレッジベースコンテンツのバッチ書き込み、または単一バッチで複数の Slices への書き込み。 |
MGet | 複数のドキュメント ID がわかっている場合に、単一リクエストで同じまたは異なる Slices からドキュメントを読み取り。 |
Reindex | 通常のインデックスと Collections 間、または異なる Collections 間でのデータ移行。 |
操作 | API |
ドキュメントの書き込みまたは上書き |
|
ドキュメント ID の自動生成 |
|
ドキュメントの作成のみ |
|
ドキュメントの取得 |
|
ドキュメントの存在確認 |
|
|
|
ドキュメントの更新 |
|
ドキュメントの削除 |
|
ルール:
単一ドキュメントリクエストは 1 つの Slice のみを指定できます。カンマ区切りの値および
_allは許可されていません。index、create、およびupdateは、auto_create_slice=trueの場合、存在しない Slice を自動的に登録できます。読み取りおよび削除操作は Slice を自動的に登録しません。存在しない Slice を指定すると、HTTP404が返されます。一部のドキュメントおよびクエリ API は、論理 Slice を表すために
routingを使用できます。サポート範囲および競合ルールについては、「ルーティング互換パラメーター」をご参照ください。各 Bulk リクエストは、最大
512個の異なる不足している Slices を自動登録できます。既存の Slices はこの制限にカウントされません。wait_for_active_shardsは、AI Engine Edition 書き込みパイプラインでレプリカを待機する条件として使用されません。ドキュメントが検索可能になるのを待つには、refresh=wait_forを使用してください。dense_vectorフィールドは、デフォルトで返される_sourceに含まれません。GET /{collection}/_doc/{id}およびGET /{collection}/_source/{id}のいずれもベクトル値を返しません。これらを返すには、明示的に_source_includesを指定してください。
Refresh およびクエリ可視性
書き込みリクエストが成功したことは、データが永続化されたことを示しますが、検索ノードでクエリ可能になったことを意味しません。AI Engine Edition はステートレスアーキテクチャを使用しています。Refresh には、インデックスノードが新しい Commit を生成および公開し、その後検索ノードが新しい検索可能バージョンをロードする必要があります。これは、従来のステートフル Elasticsearch のローカル Refresh よりもオーバーヘッドが高い分散クロスノード操作です。
index.refresh_interval は Collection 設定を通じてクエリおよび調整できます。現在の値は GET /{collection}/_settings を使用して確認できます。Refresh 間隔を短くするとリソースオーバーヘッドが増加します。本番環境では、5s 以上に設定してください。低遅延可視性要件がある場合は、ビジネスワークロードに基づいて値を調整してください。実際の有効値は現在の Collection 設定に基づいています。自動 Refresh は値を -1 に設定することで無効にできます。この間隔を短縮する前に、Commit 公開頻度、書き込みスループット、およびオブジェクトストレージ I/O を評価してください。
クエリ可視性のビジネス要件に基づいて、以下のいずれかの方法を選択してください。
方法 | 適用シナリオ | 注意事項 |
| Bulk インポートおよびログ書き込みなどのスループット優先シナリオ。 | 書き込みはすぐに返されます。バックグラウンド Refresh により、データがクエリ結果で利用可能になります。 |
| 書き込み直後にクエリを実行する必要がある読み取り後書き込みシナリオ。 |
|
| 即時可視性が本当に必要な低頻度書き込み。 | 即時の分散 Refresh をトリガーします。応答には |
| 低頻度操作またはバッチインポート後の統一可視性確認。 | Collection のすべての現在のバッキングを Refresh します。 |
index.refresh_interval=-1 は自動 Refresh を無効にします。この場合、refresh=wait_for を使用した書き込みは、別のリクエストが明示的な Refresh をトリガーするまで無期限に待機します。明示的な Refresh プロセスなしにこれらの設定を組み合わせないでください。本番環境で読み取り後書き込みが必要な場合、ビジネス遅延要件に基づいて自動 Refresh を待つか明示的な Refresh を選択し、分散 Refresh オーバーヘッドを評価してください。Refresh はクエリ可視性のみに対処します。すべてのクエリレプリカが利用可能であることを意味せず、クエリプローブおよび高可用性チェックに代わるものではありません。
Bulk
Bulk アイテムの各アクションメタデータは、クイックスタートの例のように独自の _slice を提供できます。バッチ内のすべてのアイテムが同じ Slice に書き込まれる場合、URL でデフォルト値を提供できます。
POST /knowledge-chunks/_bulk?_slice=tenant-a
{ "index": { "_id": "chunk-2001" } }
{ "tenant_id": "tenant-a", "document_id": "doc-account-security", "title": "アカウントセキュリティ設定", "content": "管理者はセキュリティ設定ページで多要素認証 (MFA) を有効化できます。" }アイテムの _slice は URL のデフォルト値を上書きできます。名前空間モードはドキュメントフィールドから Slice を導出しません。ドキュメント本文に tenant_id フィールドが含まれていても、実際の書き込み場所は _slice によって決定されます。エラー処理については、「一般的な API 規則」をご参照ください。
Multi Get
MGet は、既知の ID を持つ複数のドキュメントを一度に読み取るのに適しています。各アイテムは異なる Slice にアクセスできます。
POST /knowledge-chunks/_mget
{
"docs": [
{ "_id": "chunk-1001", "_slice": "tenant-a" },
{ "_id": "chunk-1002", "_slice": "tenant-b" }
]
}URL の _slice はデフォルト値として機能できます。各アイテムはデフォルト値を上書きできます。各アイテムは最終的に単一の Slice に解決する必要があります。
Reindex
Reindex は、通常のインデックスと Collections 間、または異なる Collections 間でのデータ移行に適しています。同じ Collection 内で Slice をコピーするには、Copy Slice を使用してください。
ソースが Collection の場合、リクエストボディで明示的に source._slice を指定する必要があります。そうでない場合、HTTP 400 が返されます。宛先が Collection の場合、1 つの宛先 Slice のみを指定でき、値は ={slice} 形式を使用する必要があります。
POST /_reindex
{
"source": {
"index": "source-knowledge-chunks",
"_slice": "tenant-a,tenant-b"
},
"dest": {
"index": "target-knowledge-chunks",
"_slice": "=tenant-archive"
}
}宛先 Slice は存在しない場合、自動的に登録されます。トップレベルの slices パラメーターは Elasticsearch Reindex の並列性を表し、ビジネス Slices の数とは無関係です。いずれかの側が Collection の場合、Reindex はスクリプトをサポートしません。Collection が宛先の場合、明示的なインジェストパイプラインはサポートされていません。
データのクエリ
Collection クエリは引き続き Elasticsearch Query DSL を使用します。このセクションでは、AI Engine Edition が追加した Slice クエリ範囲のみを取り上げます。このガイドに記載されていない Query DSL およびクエリ機能については、9.99.0 インスタンスの実際のサポート範囲が優先されます。
クエリで明示的に _slice を指定することは、両方のモードに適用されます。名前空間モードでは通常、明示的なクエリ範囲が必要です。ベクトルクラスターリコールモードの KNN クエリは、複数の候補 Slices を自動的に選択できます。詳細については、「ベクトルクラスターリコールモード:自動候補 Slice 選択」をご参照ください。
クエリ範囲の指定
クエリ範囲 | 適用シナリオ | 例 |
単一 Slice | シングルテナントオンラインクエリ、特定の名前空間内での検索 |
|
複数 Slices | 既知の少数テナントの集約クエリ、クロス名前空間クエリ |
|
すべての Slices | オフライン分析、監査、または明示的な全範囲操作クエリ |
|
単一クエリは最大 1024 個の Slices を指定できます。
Slice 数の制限に加えて、4096 バイトの HTTP リクエスト行長制限に注意してください。Slice 名が長い場合、1024 に達する前に too_long_http_line_exception が返される可能性があります。その場合、Slice 名を短縮するか、複数のクエリに分割するか、_slice=_all を使用してください。
クエリリストに存在しない Slices が含まれる可能性がある場合は、次を使用します。
GET /knowledge-chunks/_search?_slice=tenant-a,tenant-b&ignore_missing_slice=trueこのパラメーターを使用しない場合、いずれかの Slice が存在しないと、リクエスト全体が HTTP 404 を返します。_slice=_all と一緒に使用する場合、ignore_missing_slice は効果がなく、黙って無視されます。
次のクエリ API も同じ Slice 範囲パラメーターをサポートします。
Search および Count
Multi search
Search template
Async search
Validate query
Search shards
Update by query および Delete by query
Update by query、Delete by query、および Reindex はデータの書き込みまたは削除を行い、ターゲット Slice を明示的に指定する必要があります。Slice が指定されていない場合、リクエストは拒否され、HTTP
400を返します。
_slice が省略された場合のすべての Slices のクエリ
デフォルトでは、名前空間モードのクエリには明示的な _slice が必要です。_slice を持たない読み取り専用クエリが自動的にすべての Slices をクエリするようにするには、次のクラスター設定を有効にしてください。
PUT /_cluster/settings
{
"persistent": {
"apack.slice_collection.search.default_to_all_slices": true
}
}この設定を有効にすると、次のリクエストは明示的に _slice=_all を指定したのと同じになります。
GET /knowledge-chunks/_searchこれはクラスターレベルの設定であり、すべての Collections に影響し、Search や Count などの読み取り専用クエリ API のみに適用されます。全範囲クエリは通常、Slice 固有のクエリよりもリソースオーバーヘッドが高くなります。すべての Slices をクエリする必要があるリクエストが少数しかない場合は、引き続き明示的に _slice=_all を使用してください。
特定の Slices 内でのテキスト検索の最適化
キーワードまたは全文検索が通常、1 つまたは少数の特定の Slices のみをクエリする場合、Collection 作成時に index.sliced_postings.enabled を有効にして、クエリがアクセスする必要のある転置インデックスデータの範囲を縮小できます。
PUT /_slice_collection/knowledge-chunks
{
"settings": {
"index.sliced_postings.enabled": true
}
}この設定はデフォルトで false になっており、Collection 作成時のみ構成できます。作成後に変更することはできません。この設定を有効にした後も、_slice=_all を使用してすべての Slices をクエリできますが、Slice クエリ範囲を制限する主な最適化効果は得られません。ビジネスで主にグローバルテキスト検索を実行する場合は、デフォルトの無効を維持してください。
この設定を有効にした後、completion フィールドはサポートされず、text フィールドに対して fielddata=true を設定することはサポートされません。
クエリベストプラクティス
名前空間モードを使用する場合、またはリクエストが自動候補 Slice 選択をサポートしない場合は、明示的に 1 つまたは少数の Slices を指定してください。
_slice=_allをデフォルトのアクセス方法として使用しないでください。ベクトルクラスターリコールモードを使用する場合、取得率およびクエリオーバーヘッドテストを通じて
query_slice_countを決定してください。候補 Slices の数を盲目的に増やさないでください。_allのクエリオーバーヘッドは、バッキングおよびシャードの数に比例して増加します。実行前にクエリ範囲、タイムアウト、およびクラスター負荷を評価してください。存在しない可能性のあるオプションの Slices には、
ignore_missing_slice=trueを使用してください。単一の不足している Slice のためにバッチ全体をリトライしないでください。アプリケーションは、同じドキュメントの書き込み、読み取り、更新、および削除に一貫した Slice を使用する必要があります。
高度な機能
Warm Slice キャッシュ
_warm_slice API は、オブジェクトストレージから検索ノード上の共有キャッシュに、指定された Slice への後続のクエリがアクセスする可能性のあるデータをプリフェッチし、コールドデータの初回クエリ遅延を削減します。ウォーミング範囲には、DiskBBQ ベクトル、Slice 関連の転置インデックスデータ、doc values、および格納フィールドが含まれ、Slice が存在するシャードのすべての検索可能レプリカをカバーします。
ウォーミングはキャッシュ最適化のためのみです。後続のアクセス速度にのみ影響し、クエリ結果を変更せず、データがキャッシュにどれだけ留まるかを保証しません。
ウォーミングの使用例:
ユーザーが長期間アクセスしていないナレッジベース、コードリポジトリ、またはエージェントメモリスペースを開こうとしている場合。最初のクエリの前に対応する Slice をウォーミングできます。
バッチインポートまたはデータ移行が完了した後、クエリトラフィックを切り替える前に、アクティブ化される予定の Slices をウォーミングできます。
特定の名前空間が特定の時間帯にアクセスピークを経験することがわかっている場合。これらの Slices を事前にウォーミングできます。
データアクセスが予測不可能な場合、多数の Slices を一度にウォーミングする必要がある場合、またはターゲット Slices がすでにホットデータである場合は、アクティブなウォーミングは推奨されません。大規模なウォーミングはオブジェクトストレージおよび検索ノードのネットワーク、キャッシュ、および計算リソースを消費します。また、既存のホットデータをキャッシュから追い出す可能性もあります。
非同期ウォーミングの開始
デフォルトでは、ウォーミングタスクは非同期で送信されます。
POST /knowledge-chunks/_warm_slice?_slice=tenant-aリクエストは HTTP 200 を返します。応答ボディの status フィールドは ACCEPTED になり、応答にはこのウォーミングタスクのタスク ID が含まれます。
{
"status": "ACCEPTED",
"message": "cache warm hint accepted",
"task": "{nodeId}:{taskId}"
}実行中のタスクをクエリするには、次の API を使用します。
GET /_tasks/{nodeId}:{taskId}デフォルトでは、タスク完了後、タスク結果は保持されません。完了後のタスク結果をクエリするには、タスク送信時に store_result=true を設定します。
POST /knowledge-chunks/_warm_slice?_slice=tenant-a&store_result=true非同期モードでは、ターゲット Slice の存在を検証しません。存在しない Slice の非同期ウォーミングを開始しても ACCEPTED を返しますが、ウォーミングは実行されず、エラーも返されません。バッチウォーミングスクリプトは、事前に Slice リストを確認するか、同期モードを使用する必要があります(同期モードでは存在しない Slices に対して HTTP 404 を返します)。
ウォーミング完了の待機
ウォーミング統計を直接取得するには、同期的に待機します。
POST /knowledge-chunks/_warm_slice?_slice=tenant-a&wait_for_completion=true&timeout=60sクエリパラメーター:
パラメーター | 必須 | デフォルト値 | 説明 |
| はい | なし | ウォーミングする Slice。両方のパラメーターが存在する場合、値は同じである必要があります。そうでない場合、HTTP |
| いいえ |
| すべての検索可能レプリカがウォーミング結果を返すのを待つかどうか。 |
| いいえ |
| タスク完了後、Tasks API を介して結果を照会するために結果を保持するかどうか。 |
| いいえ | なし | シャード応答を待機する最大時間(例: |
同期応答には、標準的な _shards 情報および次の統計フィールドが含まれます。
フィールド | 説明 |
| 現在の検索可能データ内で Slice に一致するセグメント数。 |
| ウォーミング範囲を計画する際に読み取られたドキュメント数。 |
| ウォーミングのためにリクエストされたデータ範囲数。 |
| ウォーミングされたデータ範囲数。 |
| ファイルがマージまたは削除されたためにスキップされたデータ範囲数。 |
| ウォーミングのためにリクエストされたバイト数。 |
この API を使用する際の注意点:
各リクエストは 1 つの Collection および 1 つの Slice のみを指定できます。不足している Slices は自動的に登録されません。
_allは使用できません。同じクエリシャードレプリカおよび Slice に対する同時ウォーミングリクエストはマージされます。重複リクエストを送信する必要はありません。
ウォーミングは、リクエスト送信時に検索可能なデータのみを処理します。その後検索可能になった新しいデータは、このウォーミング結果に含まれません。
ranges_skippedが0より大きいからといって、ウォーミングが失敗したとは限りません。ウォーミング中にファイルがマージまたは削除された場合、対応する範囲はスキップされます。ウォーミングはオブジェクトストレージ読み取り帯域幅および検索ノードリソースを消費します。本番環境では、デフォルトの非同期モードを使用し、同時にウォーミングされる Slices 数を制御してください。
ウォーミングキューがいっぱいの場合、サーバーは新しいリクエストを拒否する可能性があります。クライアントは上限付きのバックオフを使用する必要があります。すべての Slices を同時にリトライしないでください。
DiskBBQ ベクトルインデックス
DiskBBQ は、dense_vector の bbq_disk インデックスタイプに対応します。これはシャード内で使用されるベクトルインデックス機能であり、第 3 の Collection モードではありません。名前空間モードおよびベクトルクラスターリコールモードの両方で DiskBBQ を使用できます。このセクションでは、構成およびクエリ方法について説明します。AI Engine Edition のパフォーマンスリファレンスについては、機能概要をご参照ください。
DiskBBQ の使用例:
ベクトルスケールが大きく、ディスクネイティブベクトルインデックスを通じて常駐メモリ圧力を軽減したい場合。
ビジネス評価データセットを使用して、取得率、クエリ遅延、およびデータ読み取りオーバーヘッドのバランスを調整できる場合。
データセットが小さい場合、正確な最近傍結果が必要な場合、または取得率評価が完了していない場合は、DiskBBQ をデフォルトアプローチとして推奨しません。
マッピングの構成
名前空間モードのクイックスタートでは、Collection 作成時にすでに DiskBBQ を構成しています。ベクトルフィールドがまだない他の Collections については、マッピング API を使用してフィールドを追加できます。
PUT /{collection}/_mapping
{
"properties": {
"embedding": {
"type": "dense_vector",
"dims": 4,
"index": true,
"similarity": "cosine",
"index_options": {
"type": "bbq_disk"
}
}
}
}"type": "bbq_disk" のみを指定すると、サーバーは残りの index_options デフォルト値を自動的に補完します。マッピングを読み取ることで、実際の有効な構成を確認できます。ここで、rescore_vector.oversample はデフォルトで有効になっています。
{
"index_options": {
"type": "bbq_disk",
"cluster_size": 384,
"flat_index_threshold": -1,
"default_visit_percentage": 0.0,
"rescore_vector": { "oversample": 3.0 },
"bits": 1
}
}ベクトル次元および類似性メトリックは、ベクトルを生成するために使用されたモデルと一致させる必要があります。既存のベクトルフィールドのインデックスタイプを切り替える必要がある場合は、ターゲット Collection を作成し、新しいマッピングを構成してから、Reindex を使用してデータを移行し、再評価してください。
KNN クエリの実行
次のリクエストは、名前空間モードのクイックスタートのデータに基づいており、visit_percentage を使用して指定された Slice 内での DiskBBQ アクセス範囲を調整します。
POST /knowledge-chunks/_search?_slice=tenant-a
{
"knn": {
"field": "embedding",
"query_vector": [0.80, 0.12, 0.05, 0.03],
"k": 10,
"visit_percentage": 10.0
},
"_source": ["document_id", "title", "content"]
}パラメーター | 説明 |
| 返す最近傍の数。 |
| シャードごとにアクセスするベクトルのパーセンテージ。有効値: |
| 有効な |
| 構造化フィルタリングを追加して、関連性の低い候補を削減します。 |
| 量子化検索から取得された候補を元のベクトルを使用して再スコアリングします。これにより、マッピングの |
DiskBBQ およびベクトルクラスターリコールモードは異なるレベルで動作します。ベクトルクラスターリコールモードはまずすべてのベクトルクラスターから候補 Slices を選択し、その後 DiskBBQ がこれらの Slices の物理シャード内で KNN を実行します。両方を一緒に使用できますが、query_slice_count およびベクトルアクセス範囲を個別に制御して、クエリ範囲が過剰にならないように注意してください。
Collection Alias
Collection Alias は、アプリケーションに安定したアクセス名を提供します。複数の Collections を統一的にクエリしたり、書き込みターゲットを切り替えたりするために使用できます。aliases フィールドを使用して Collection 作成時に Alias を追加するか、標準の Elasticsearch _aliases API を使用して Alias を管理できます。
Collection Alias の使用例:
バージョン移行:アプリケーションは常に固定の Alias にアクセスします。データ準備が完了したら、書き込みターゲットを古い Collection から新しい Collection に切り替えます。
マルチ Collection クエリ:
slice_strategyが同じ複数の Collections を単一の Alias を介してクエリします。アプリケーションデカップリング:ビジネス構成は Alias のみを保存し、バージョンまたは日付を含む Collection 名に直接依存しません。
ビジネスが Alias
filterまたはroutingに依存している場合、または通常のインデックスと Collections の両方を同じ Alias に含めたい場合は、Collection Alias は適用されません。
次の例では、knowledge-chunks-v1 および knowledge-chunks-v2 の両方が名前空間モード (exact) を使用する Collections であると仮定します。これらを同じ Alias に追加し、knowledge-chunks-v2 を書き込みターゲットに設定します。
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
}
}
]
}Alias を表示します。
GET /_alias/knowledge-chunks-currentAlias からメンバーを削除します。
POST /_aliases
{
"actions": [
{
"remove": {
"index": "knowledge-chunks-v1",
"alias": "knowledge-chunks-current"
}
}
]
}Alias を使用する際の注意点:
同じ Alias のメンバーは、同じ
slice_strategyを使用する必要があります。ベクトルクラスターリコールモード (vector_cluster) を使用するメンバーは、同じベクトル次元も使用する必要があります。マルチメンバー Alias を書き込みに使用する場合、正確に 1 つのメンバーが
is_write_index=trueを持つ必要があります。Search、Count、Bulk などの API は、Alias セマンティクスに基づいてマルチメンバー Alias にアクセスできます。
単一ドキュメント GET および MGet の各アイテムは、1 つの Collection に一意に解決する必要があります。したがって、単一メンバー Alias のみを使用できます。
filter、routing、index_routing、search_routing、、およびremove_indexは、現在 Alias でサポートされていません。マルチメンバー Alias をクエリする場合、ターゲット Slice はすべてのメンバー Collections に存在する必要があります。そうでない場合、HTTP
404が返されます。バージョン移行中は、古い Collection と新しい Collection の Slice セットが通常異なります。この場合、明示的にignore_missing_slice=trueを含めてください(例:GET /knowledge-chunks-current/_search?_slice=tenant-a&ignore_missing_slice=true)。これにより、リクエストは不足しているメンバーをスキップして正常に返されます。
Copy Slice
Copy Slice は、同じ Collection 内で 1 つの Slice から別の Slice に複製可能なドキュメントをオンラインでコピーします。データ移行には適していますが、時点スナップショット、バックアップ、またはアトミックトラフィックスイッチングには適していません。
Copy Slice の使用例:
テナントのテストまたは検証データをコピーしながら、ソース Slice と同じ Collection マッピングを維持します。
同じ Collection 内で新しい名前空間を準備します。コピーが完了して検証された後、アプリケーション層でアクセス名を切り替えます。
Slice のオンラインデータ移行を実行しながら、ソース Slice および宛先 Slice の両方を読み取りおよび書き込み可能に維持します。
コピー中に書き込みが発生する可能性があるため、結果はソースの時点スナップショットではありません。バックアップ、ディザスタリカバリ、厳密に一貫性のあるスナップショット、またはアトミックトラフィックスイッチングには、Copy Slice を使用しないでください。
非同期コピーの開始
POST /_slice_collection/knowledge-chunks/slices/tenant-a/_copy/tenant-a-copy?wait_for_completion=false
{
"workers": 8,
"batch_size": 5000,
"requests_per_second": -1
}クエリパラメーター:
パラメーター | デフォルト値 | 説明 |
|
| コピー完了を待つかどうか。 |
|
| 現在の HTTP リクエストの待機時間。タイムアウトしてもバックグラウンドコピーは停止しません。 |
リクエストボディパラメーターはすべてオプションです。
パラメーター | デフォルト値 | 有効値または説明 |
| 実行ノードのプロセッサ数の半分(切り上げ) |
|
|
|
|
|
|
|
非同期リクエストは HTTP 202 Accepted を返します。応答から copy_id を保存し、サーバーから返された status_url および cancel_url を使用することを推奨します。
{
"copy_id": "tenant-a-copy:1h",
"completed": false,
"timed_out": false,
"state": "RUNNING",
"source": "tenant-a",
"target": "tenant-a-copy",
"workers": 8,
"progress": { "total": 0, "created": 0, "version_conflicts": 0 },
"status_url": "/_slice_collection/knowledge-chunks/_copy/tenant-a-copy%3A1h",
"cancel_url": "/_slice_collection/knowledge-chunks/_copy/tenant-a-copy%3A1h/_cancel"
}copy_id は、宛先 Slice 名とコロンなどの URL 予約文字を含むシステム生成のサフィックスで構成されます。ステータスクエリ URL を手動で構築する場合、URL エンコーディングが必要です。応答から直接 status_url および cancel_url を使用してください。
実行中のコピーの応答には progress オブジェクトが含まれます。コピー終了後、このフィールドは result になり、経過時間を表すミリ秒単位の took フィールドが含まれます。ドキュメント本文に関連する version_conflicts フィールドは、progress または result にあります。
デフォルトの wait_for_completion=true を使用する場合、コピーが timeout 内に完了すると、API は HTTP 200 を返します。待機がタイムアウトすると、API は timed_out=true で HTTP 202 を返し、バックグラウンドコピーは継続します。
コピー状態のクエリ
GET /_slice_collection/knowledge-chunks/_copy/{copy_id}state は RUNNING、CANCELLING、SUCCEEDED、FAILED、または CANCELLED になります。ステータスクエリは、state=FAILED の場合でも HTTP 200 を返す可能性があります。呼び出し元は state および error を確認する必要があります。
完了ステータスはデフォルトで 1d 保持されます。その後、クエリは HTTP 404 を返す可能性があります。呼び出し元は、Copy ステータス API を長期的な監査ストレージとして使用しないでください。
保持期間は、動的クラスター設定 apack.slice_collection.copy.reservation_retention によって制御されます。デフォルト値は 1d で、最小値は 1h です。
PUT /_cluster/settings
{
"persistent": {
"apack.slice_collection.copy.reservation_retention": "1d"
}
}コピーのキャンセル
POST /_slice_collection/knowledge-chunks/_copy/{copy_id}/_cancelキャンセルは宛先 Slice またはすでにコピーされたドキュメントを削除しません。キャンセルは非同期です。API は HTTP 202 および state が CANCELLING に変更されることを返します。state が CANCELLED に変更されるまで、ステータスをポーリングし続けてください。その時点で、応答の cancel_url が消えます。
コピーデータのセマンティクス
ソース Slice および宛先 Slice は同じ Collection に属し、同じ名前であってはなりません。
宛先 Slice は存在しない場合、Collection の
auto_create_slice=falseであっても自動的に登録されます。宛先 Slice にすでに検索可能なドキュメントが含まれている場合、コピー開始リクエストは拒否され、エラー種別
target_lifecycle_conflictで HTTP409を返します。コピーは作成専用書き込みを使用し、宛先 Slice の同じ
_idを持つ既存のドキュメントを上書きしません。競合はversion_conflictsにカウントされ、他のドキュメントはコピーされ続けます。コピー完了後、このフィールドを確認し、ビジネス要件に基づいて同じ ID のデータを処理してください。ソース Slice および宛先 Slice の両方は、コピー中に読み取りおよび書き込みが可能です。したがって、結果はソース Slice のアトミック時点スナップショットではありません。
ソース Slice は、ドキュメントを再構築するために完全な
_sourceを保持する必要があります。_sourceが無効になっている場合、合成_sourceが使用されている場合、空でない_source.includesが構成されている場合、または_source.excludesが安全であると証明できない場合は、コピーは拒否されます。ソース Slice マッピングに
semantic_textなどの推論フィールドが含まれている場合、コピーはサポートされていません。コピー中にデフォルト/最終インジェストパイプラインは再実行されません。
ドキュメントは、宛先の現在のマッピングに対して再適用されます。たとえば、新しく追加されたマルチフィールドは宛先で生成されます。
コピー完了後にビジネストラフィックを切り替えるには、アプリケーション層でコピー状態および結果を確認し、ビジネス構成を通じて宛先 Slice に切り替えてください。
運用と権限
クラスターモニタリング
コンソールのインスタンス詳細ページの左側ナビゲーションウィンドウで、モニタリングとログ > クラスターモニタリング を選択して、インスタンスの実行メトリクスを表示します。アラートのしきい値を構成する際は、ビジネス SLO およびストレステストのベースラインに基づいて設定してください。具体的なメトリック名およびアラートエントリポイントは、コンソールに基づいています。
次の表に、一般的な観測ターゲットとコンソールメトリクスのマッピングを示します。
観測ターゲット | コンソールメトリクス | ディメンション |
書き込みスループット | クラスター書き込み QPS | クラスターレベル |
書き込み遅延 | クラスターの平均書き込み遅延 | クラスターレベル |
クエリスループット | クラスタークエリ QPS | クラスターレベル |
クエリ遅延 | クラスターの平均検索遅延 | クラスターレベル |
CPU 使用率 | ノード CPU 使用率 (ES ビジネス)、ノード CPU 使用率 (合計) | ノードレベル |
ヒープメモリ使用率 | ノードヒープメモリ使用率 (ES ビジネス) | ノードレベル |
拒否 | 書き込みスレッドプール拒否タスク、クエリスレッドプール拒否リクエスト | スレッドプールディメンション |
クラスターモニタリングページはメトリクスをカテゴリ別にグループ化しており、インデックスノードおよび検索ノードのロール別グループ化は提供していません。2 種類のノードを別々に観測するには、リソースタイプ を 指定ノード に切り替え、その後ノード名でフィルターをかけます。インデックスノード名には -index- が含まれ、検索ノード名には -search- が含まれます。AI Engine Edition にはウォームノードがありません。インデックスノード、検索ノード、および AI Engine Edition が実際に提供する監視メトリクスのみを監視する必要があります。
CAT API
CAT API は手動観測およびトラブルシューティングに適しています。日常的な概要については、Collection から始めます。容量またはシャード異常が発生した場合は、バッキングを確認します。特定の名前空間のデータ分布およびドキュメント数を特定するには、Slice を確認します。アプリケーションは、ビジネスリクエストのために CAT 出力に依存しないでください。
観測レベル | API | 主要情報 |
Collection |
| ライフサイクルステータス、バッキング数、Slices 数、容量、ドキュメント数、およびストレージサイズ |
バッキング |
| ヘルスステータス、新しい Slices の受け入れ可否、シャード、レプリカ、容量、および未割り当てシャード数 |
Slice |
| Slice のバッキング、ターゲットシャード、レプリカ数、およびドキュメント数 |
デフォルトカラム:
観測レベル | デフォルトカラム |
Collection |
|
バッキング |
|
Slice |
|
一般的なクエリパラメーター:
パラメーター | 説明 |
| ヘッダーを表示するかどうか。 |
| 出力形式(例: |
| 指定されたカラムのみを返します。 |
| 指定されたカラムでソートします。 |
| ストレージサイズの単位を指定します。 |
| 利用可能なカラムを表示します。 |
Slice CAT は、特定の完全なバッキング名に範囲を絞るために backing={backing} もサポートします。docs.count で全バッキングをソートするのは高コストなクエリであり、明示的に allow_expensive_search=true を設定する必要があります。
プログラムによる処理には、format=json を使用し、カラムを明示的に指定します。
GET /_cat/slice_collection/knowledge-chunks?format=json&h=collection,state,backings,slices,docs.count,pri.store.sizeCAT API は手動トラブルシューティングおよび有界操作クエリ用に設計されています。
Slice CAT は最大
10000行を返します。制限を超えると、HTTPWarningヘッダーで結果が不完全であることが示されます。完全かつ安定したページネーションされた Slice リストが必要な場合は、
GET /_slice_collection/{collection}/slicesを使用してください。docs.countはニアリアルタイムデータです。書き込まれたがまだ Refresh されていないドキュメントはカウントされない場合があります。pri.store.sizeおよびstore.sizeはインデックスデータサイズを表しますが、ステートレスノードのローカルディスク使用量と同等ではありません。また、クリーンアップ待ちのオブジェクトストレージ内の既存データも含まれていません。
Collection の削除
この API は、ビジネスデータをオフラインにする場合や、このガイドの例をクリーンアップする場合に適用されます。削除により、Collection 構成およびシステム管理データが削除されます。この操作は不可逆です。特定の Slice のみをクリーンアップするには、Slice 削除 API を使用してください。
DELETE /_slice_collection/knowledge-chunksクエリパラメーター:
パラメーター | 説明 |
| マスターノードがリクエストを処理するまで待機する最大時間。 |
| 削除確認を待機する最大時間。 |
成功応答:
{
"acknowledged": true
}{collection} はカンマ区切りの名前をサポートします。デフォルトでは、ワイルドカード * および _all は許可されていません。リクエストは HTTP 400 を返します。これらを使用するには、action.destructive_requires_name クラスター設定を調整してください。
Copy Slice 操作が実行中またはキャンセル中の場合、削除は HTTP 409 を返します。キャンセルは非同期です。state が CANCELLED に変更されるまで、削除は拒否され続けます。state=CANCELLED を確認してから削除を実行してください。
acknowledged=true は、論理リソースおよびメタデータの削除が確認されたことを示します。オブジェクトストレージ内の既存インデックスおよび Translog ファイルは、バックグラウンドプロセスによって非同期的に回収されます。応答が返された時点で物理スペースが即座に解放されるとは限りません。
Collection 権限
操作 | 必要な権限 |
Collection または Slice の作成、更新、または削除 | Collection のインデックス権限 |
| Collection のインデックス権限 |
| クラスター権限 |
| Collection のインデックス権限 |
Copy Slice の開始またはキャンセル | Collection のインデックス権限 |
Collection の取得、Slice の一覧表示、CAT の使用、または Copy ステータスのクエリ | Collection のインデックス権限 |
ドキュメントの読み取り/書き込みおよびクエリ | 対応するインデックス権限 |
Collection Alias の作成および変更 | Collection 名および Alias 名の両方に対するインデックス権限 |
ロールを構成する際は、インデックス名に Collection 名および対応するバッキングワイルドカードの両方を含める必要があります。
<collection>
.sc-<collection>-*たとえば、Collection 名が knowledge-chunks の場合、ロールに knowledge-chunks および .sc-knowledge-chunks-* の両方を構成します。Collection 名のみを構成すると、単一ドキュメントの読み取り/書き込み、MGet、明示的な Refresh、および _update_by_query などの操作が HTTP 403 を返します。
.sc-* は権限構成専用です。アプリケーションは引き続き Collection 名を介してデータにアクセスし、特定のバッキングインデックス名を直接アクセスまたは保存しないでください。
Slices はテナント権限隔離の境界ではありません。権限を分離するには、アプリケーション層または他のサポートされている Elasticsearch セキュリティモデルで実装してください。
リファレンス
AI Engine Edition 9.99.0 はステートレスアーキテクチャを使用しており、従来のステートフル Elasticsearch のすべての機能、インデックス設定、および操作方法を完全に継承していません。以下の内容は、移行中に一般的で影響の大きい違いのみをリストしており、すべての非互換機能の完全なリストではありません。この表に機能が記載されていないからといって、サポートされていることを意味しません。このガイドに記載されていない Elasticsearch API、インデックス設定、または操作機能を使用する前に、インスタンスの実際のサポート範囲を確認し、実際のビジネスデータで検証してください。
従来のステートフル Elasticsearch との一般的な違い
次の表で該当なしとマークされた設定は、変更時に HTTP 200 を返し、新しい値が読み取り時に表示される場合があります。これは、機能が有効になったことを示しません。
従来のステートフル Elasticsearch 機能または設定 | AI Engine Edition 9.99.0 での違い | 推奨事項 |
Index Lifecycle Management (ILM)、 | ILM ポリシー管理および実行はサポートされていません。関連 API は登録されていません。 | ログおよび時系列データの場合は、インスタンスが機能をサポートしている場合に Data Stream Lifecycle を使用してください。通常のインデックスの場合は、外部スケジューラを使用して、インスタンスがサポートする Rollover、Delete Index、およびその他の API を呼び出してください。 |
hot、warm、cold、frozen データティアおよび | 従来の | オブジェクトストレージを使用してデータを永続化します。インデックスノードおよび検索ノードを別々に計画します。ビジネス保持ポリシーに基づいて既存データを管理し、インスタンスが機能をサポートしている場合にダウンサンプリングを使用してください。 |
Watcher | Watcher トリガー、条件、および通知実行チェーンはサポートされていません。関連 API は登録されていません。 | CloudMonitor、Log Service (SLS) アラート、エンタープライズアラートプラットフォーム、または外部スケジュールタスクを使用してください。 |
レガシ Stack Monitoring ローカルコレクションパイプライン |
| コンソール監視およびログを使用してください。アプリケーション側での観測が必要な場合は、インスタンスがサポートするクラスターおよびノード統計 API を使用してください。 |
Rollup Job および | レガシ Rollup タスクおよびそのクエリ API はサポートされていません。関連 API は登録されていません。 | データタイプに基づいて Downsample、Transform、または外部集約タスクを選択し、インスタンスがサポートする API に基づいて実装してください。 |
Searchable Snapshots、スナップショットマウント、および frozen ティア移行 | Searchable Snapshot マウントセマンティクスはサポートされていません。マウント API は登録されておらず、frozen ティアプロセスは再利用できません。 | オンラインデータにはオブジェクトストレージネイティブインデックスを使用してください。バックアップおよび復元には、インスタンスが機能をサポートしている場合に標準的な Snapshot/Restore を使用してください。 |
| 検索ノード数に基づいてクエリレプリカが自動的に調整されることはありません。この設定は該当せず、レプリカが自動的に拡張されることはありません。 |
|
| Translog 耐久性を | Bulk サイズ、同時実行数、更新頻度、シャード計画、およびインデックスノード容量を通じて書き込みスループットを最適化してください。 |
| AI Engine Edition 書き込みパイプラインでレプリカ待機条件として使用されません。 | 書き込み応答を個別に確認し、 |
さらに、ステートレスアーキテクチャのレプリカは主にクエリおよびキャッシュに使用されます。従来のステートフル Elasticsearch の永続レプリカ(プライマリシャードに昇格可能)とは同等ではありません。クエリレプリカ数および検索ノード数が together でクエリ容量および可用性を決定します。永続データはオブジェクトストレージに格納されます。レプリカ数を増やしてもバックアップ戦略に代わるものではありません。
Collections および Slices 使用時の制限事項
以下の制限事項は、AI Engine Edition の Collection および Slice 使用にのみ適用されます。同じ名前の機能が通常のインデックスでも利用できないことを意味するものではありません。
名前およびバッチ制限
項目 | 制限 |
Collection 名 | Elasticsearch インデックスおよび Alias 命名ルールに従います。小文字である必要があります。長さは |
Slice 名 | 長さ: |
単一 Search リクエストあたりの Slices | 最大 |
単一 Bulk リクエストあたりの不足している Slices の自動作成 | 最大 |
単一バッチ登録あたりの Slices | 最大 |
Slice 一覧 API の |
|
Slice CAT によって返された行 | 最大 |
Collection および Slice API の制限事項
以下は、Collections および Slices を使用する際の一般的な API 境界です。これは、AI Engine Edition 機能の完全なサポートリストではありません。
DLS/FLS は Collections と併用できません。DLS/FLS 制限を持つロールは作成できますが、そのロールを持つユーザーが Collections にアクセスすると HTTP
403が返されます。Collections はクラスター間検索 (CCS) をサポートしていません。
Point in Time (PIT) は Collection を直接ターゲットにできません。
_graph/exploreおよび_termvectorsは Collection をターゲットにできません。_mtermvectorsにも Collection アイテムを含めることはできません。Collections は非推奨の
_knn_searchをサポートしていません。_searchリクエストでknnを使用してください。ベクトルクラスターリコールモードは、リクエストがインラインクエリベクトルを提供する場合にのみ、候補 Slices を自動的に選択できます。
routing_fieldが構成されている場合、スクリプト更新はサポートされていません。Collection Reindex はスクリプトをサポートしていません。Collection が宛先の場合、明示的なインジェストパイプラインはサポートされていません。リモートソースは
source._sliceをサポートしていません。Copy Slice はクロス Collection 操作、アトミックトラフィックスイッチング、または実行中のワーカーの動的調整をサポートしていません。
ソース Slice マッピングに
semantic_textなどの推論フィールドが含まれている場合、Copy Slice はサポートされていません。Slice CAT はページネーション、Slice ストレージサイズ統計、または Slice ストレージサイズによるソートをサポートしていません。
API クイックリファレンス
以下は、このガイドのユースケースに必要な 9.99.0 パブリック API の概要です。これは完全な Elasticsearch API リストではなく、内部で維持されている API も含まれていません。
目的 | API |
Collection の作成 |
|
Collection の取得 |
|
Collection の更新 |
|
Collection の削除 |
|
単一 Slice の登録 |
|
Slices のバッチ登録 |
|
ページネーションによる Slice の一覧表示 |
|
Slice の削除 |
|
単一ドキュメントの読み取り/書き込み |
|
バッチ書き込みおよび読み取り |
|
クエリおよびカウント |
|
その他のクエリ API |
|
Slice キャッシュのウォーミング |
|
ウォーミングタスクのクエリ |
|
クエリによる更新または削除 |
|
Reindex |
|
マッピングの更新 |
|
動的設定の更新 |
|
明示的な Refresh |
|
Collection Alias の管理 |
|
Copy Slice の開始 |
|
Copy ステータスのクエリ |
|
Copy のキャンセル |
|
Collection CAT |
|
バッキング CAT |
|
Slice CAT |
|
クラスターおよびノード観測 |
|