optimize()
-
is_l0 (bool) -
L0 Compaction を実行するかどうか。
-
target_size (int) -
Compaction 後のターゲットセグメントサイズ。正の整数である必要があります。省略した場合は、サーバーのデフォルト値が使用されます。
-
target_size_unit (str) -
target_sizeの単位。サポートされる値は"b"、"kb"、"mb"、"gb"、"tb"、"pb"です。クライアントはリクエストを送信する前に、この値を MB に変換します。
この操作は、コレクション内の小さなセグメントを Compaction し、進行状況をポーリングできる Compaction ジョブ ID を返します。
これは、本番環境以外での使用のみを目的とした Preview 版の機能です(Benchmark、POC)。
このメソッドは、Dedicated サービングクラスターとオンデマンドコンピュートにのみ適用されます。
-
サービングクラスターのコレクションでこの操作を実行する場合は、クラスターエンドポイントを使用して MilvusClient を作成してください。
-
Free & Serverless
https://{cluster-id}.serverless.{region}.vectordb.zillizcloud.com -
Dedicated
https://{cluster-id}.{region}.vectordb.zillizcloud.com:19530
-
-
オンデマンドコンピュート用のコレクションでこの操作を実行する場合は、プロジェクトエンドポイントを使用して MilvusClient を作成し、その後、検索のためにオンデマンドクラスターにアタッチするセッションを作成してください。
https://{project-id}.{region}.api.zillizcloud.com
リクエスト構文
client.optimize(
collection_name: str,
is_clustering: bool = False,
is_l0: bool = False,
target_size: int | None = None,
target_size_unit: str = "mb",
wait: bool = True,
timeout: float | None = None,
)
パラメーター:
-
collection_name (str) -
[必須]
最適化するコレクションの名前。
-
is_clustering (bool) -
ターゲットセグメントサイズ。形式:
"1000MB"、"1GB"、"1.2gb"。指定しない場合は、システムのデフォルトが使用されます。 -
wait (bool) -
最適化の完了を待機するかどうか。デフォルトは True です。False の場合は、非同期追跡用の
OptimizeTaskを返します。 -
timeout (float) -
最適化を待機する最大時間(秒)。
wait=Trueの場合にのみ適用されます。
戻り値の型: OptimizeResult | OptimizeTask
wait=True の場合は OptimizeResult を返し、wait=False の場合は OptimizeTask を返します。
戻り値:
wait=True の場合は、status、collection_name、compaction_id、target_size、progress を含む OptimizeResult を返します。wait=False の場合は、done()、progress()、result()、cancel() をサポートする OptimizeTask を返します。
例外:
-
ParamError
collection_nameが無効な場合、またはtarget_sizeの形式が正しくない場合にこの例外が発生します。 -
MilvusException
インデックス構築に失敗した場合、Compaction に失敗した場合、またはタイムアウトが発生した場合にこの例外が発生します。
例
from pymilvus import MilvusClient
client = MilvusClient(uri="YOUR_CLUSTER_ENDPOINT", token="YOUR_CLUSTER_TOKEN")
# Wait for completion
result = client.optimize(
collection_name="book",
target_size=512,
target_size_unit="mb",
wait=True,
)
print(result)
# Run asynchronously
task = client.optimize(
collection_name="book",
is_clustering=True,
target_size=1,
target_size_unit="gb",
wait=False,
)
print(task.job_id)