Monitor long-running operations Stay organized with collections Save and categorize content based on your preferences.
This page describes how to manage the lifecycle of a long-running operation(LRO) in Vertex AI Search.
Along-running operation object is returned when a callto a method might take a long time to complete. For example, the Discovery Engine API creates a long-running operation when you calldocuments.importthrough the API or Client Libraries. The operation tracks the status of theprocessing job.
You can use the long-running operations methods that the Discovery Engine API provides tocheck thestatus of the operations. Youcan also list or poll operations.
The record of an operation is kept for approximately 30 days after the operationfinishes, meaning that you can't view or list an operation after that time.
List long-running operations
The following show how to list the operations for a Google Cloudresource.
Note: Long running operations can't be filtered or paginated inVertex AI Search. That is, when you call theoperations.list method,you can't use thefilter,pageSize, orpageToken fields.REST
To list the long-running operations for a Google Cloud resource, followthis step:
Call the
operations.listmethod:curl-XGET\-H"Authorization: Bearer$(gcloudauthprint-access-token)"\"https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/operations"DATA_STORE_ID: The ID of the Vertex AI Search data store thatwas created with your engine. In the Google Cloud console URL, the data store IDappears afterengines/and before/data.
Python
For more information, see theVertex AI SearchPython API reference documentation.
To authenticate to Vertex AI Search, set up Application Default Credentials. For more information, seeSet up authentication for a local development environment.
fromtypingimportOptionalfromgoogle.cloudimportdiscoveryenginefromgoogle.longrunningimportoperations_pb2# TODO(developer): Uncomment these variables before running the sample.# project_id = "YOUR_PROJECT_ID"# location = "YOUR_PROCESSOR_LOCATION" # Options: "global"# search_engine_id = "YOUR_SEARCH_ENGINE_ID"# Create filter in https://google.aip.dev/160 syntax# operations_filter = "YOUR_FILTER"deflist_operations_sample(project_id:str,location:str,search_engine_id:str,operations_filter:Optional[str]=None,)->operations_pb2.ListOperationsResponse:# Create a clientclient=discoveryengine.DocumentServiceClient()# The full resource name of the search engine branch.name=f"projects/{project_id}/locations/{location}/collections/default_collection/dataStores/{search_engine_id}"# Make ListOperations requestrequest=operations_pb2.ListOperationsRequest(name=name,filter=operations_filter,)# Make ListOperations requestresponse=client.list_operations(request=request)# Print the Operation Informationforoperationinresponse.operations:print(operation)returnresponseGet details about a long-running operation
The following show how to get details about an operation.
REST
To get the status of and view details about a long-running operation, follow these steps:
Find the name of the operation in one of two ways:
After you've made a call to a method that returns a long-runningoperation, review the response.
For example, if you call
documents.import,the start of the response looks something like this:{"operations":[{"name":"projects/12345/locations/global/collections/default_collection/dataStores/my-datastore_4321/branches/0/operations/import-documents-56789","metadata":{"@type":"type.googleapis.com/google.cloud.discoveryengine.v1.ImportDocumentsMetadata",}}]}The
namevalue in the response provides the operation name, which canbe used to query the operation status. Don't include the quotes when youcopy the operation name.Get the operation name bylisting long-runningoperations.
Call the
operations.getmethod on the resource that created the operation:curl-XGET\-H"Authorization: Bearer$(gcloudauthprint-access-token)"\"https://discoveryengine.googleapis.com/v1/OPERATION_NAME"OPERATION_NAME: Provide the name of the operation forwhich you need information. You can find the operation name bylisting long-running operations.The first lines of the response from the
GETcommand look something like this:{"name":"projects/12345/locations/global/collections/default_collection/dataStores/my-datastore_4321/branches/0/operations/import-documents-56789","metadata":{"@type":"type.googleapis.com/google.cloud.discoveryengine.v1.ImportDocumentsMetadata"}}
Python
For more information, see theVertex AI SearchPython API reference documentation.
To authenticate to Vertex AI Search, set up Application Default Credentials. For more information, seeSet up authentication for a local development environment.
fromgoogle.cloudimportdiscoveryenginefromgoogle.longrunningimportoperations_pb2# TODO(developer): Uncomment these variables before running the sample.# Example: `projects/{project}/locations/{location}/collections/{default_collection}/dataStores/{search_engine_id}/branches/{0}/operations/{operation_id}`# operation_name = "YOUR_OPERATION_NAME"defget_operation_sample(operation_name:str)->operations_pb2.Operation:# Create a clientclient=discoveryengine.DocumentServiceClient()# Make GetOperation requestrequest=operations_pb2.GetOperationRequest(name=operation_name)operation=client.get_operation(request=request)# Print the Operation Informationprint(operation)returnoperationPoll a long-running operation
The following show how to poll the status of an operation.
REST
To poll the long-running operation until it finishes, follow these steps:
Run the following command, which calls the
operations.getmethod repeatedly, using a backoff of 10 seconds between each request:whiletrue;\docurl-XGET\-H"Authorization: Bearer$(gcloudauthprint-access-token)"\"https://discoveryengine.googleapis.com/v1/OPERATION_NAME";\sleep10;\doneOPERATION_NAME: Provide the name of the operation you want topoll. You can find the operation name bylisting long-running operations.For example,projects/12345/locations/global/collections/default_collection/dataStores/my-datastore_4321/branches/0/operations/import-documents-56789.Stop the polling job (
Control+Z) after the status shows"done": true.
Python
For more information, see theVertex AI SearchPython API reference documentation.
To authenticate to Vertex AI Search, set up Application Default Credentials. For more information, seeSet up authentication for a local development environment.
fromtimeimportsleepfromgoogle.cloudimportdiscoveryenginefromgoogle.longrunningimportoperations_pb2# TODO(developer): Uncomment these variables before running the sample.# Example: `projects/{project}/locations/{location}/collections/{default_collection}/dataStores/{search_engine_id}/branches/{0}/operations/{operation_id}`# operation_name = "YOUR_OPERATION_NAME"defpoll_operation_sample(operation_name:str,limit:int=10)->operations_pb2.Operation:# Create a clientclient=discoveryengine.DocumentServiceClient()# Make GetOperation requestrequest=operations_pb2.GetOperationRequest(name=operation_name)for_inrange(limit):operation=client.get_operation(request=request)# Print the Operation Informationprint(operation)# Stop polling when Operation is no longer runningifoperation.done:break# Wait 10 seconds before polling againsleep(10)returnoperationCancel a long-running operation
The following shows how to cancel an operation:
REST
To cancel a long-running operation, follow these steps:
Call the
operations.cancelmethod:curl-Xpost\-H"Authorization: Bearer$(gcloudauthprint-access-token)"\"https://discoveryengine.googleapis.com/v1/OPERATION_NAME":cancelOPERATION_NAME: Provide the name of the operation youwant to cancel. You can find the operation name bylisting long-running operations.For example,projects/12345/locations/global/collections/default_collection/dataStores/my-datastore_4321/branches/0/operations/import-documents-56789.After the API call is made, the server attempts to cancel the operation.The results you see and the actions you can take are as follows:
- An error with
"code": 400and"status": "FAILED_PRECONDITION"indicates that the request couldn't be canceled. A successful cancellation results in an empty JSON object. To verify thecancellation:
- Use the
operations.getmethod. If the operation is successfully cancelled, the response from the
operations.getmethod has the error"code": 1, which representstheCANCELLEDstatus code.For example:
{"name":"projects/12345/locations/global/collections/default_collection/dataStores/my-datastore_4321/branches/0/operations/import-documents-56789","metadata":{"@type":"type.googleapis.com/google.cloud.discoveryengine.v1alpha.ImportDocumentsMetadata","createTime":"2025-04-28T21:29:21.199190Z","updateTime":"2025-04-28T21:31:29.076865Z"},"done":true,"error":{"code":1,"message":"Operation projects/12345/locations/global/collections/default_collection/dataStores/my-datastore_4321/branches/0/operations/import-documents-56789 is cancelled."}}
- Use the
- An error with
Python
For more information, see theVertex AI SearchPython API reference documentation.
To authenticate to Vertex AI Search, set up Application Default Credentials. For more information, seeSet up authentication for a local development environment.
fromgoogle.cloudimportdiscoveryenginefromgoogle.longrunningimportoperations_pb2# TODO(developer): Uncomment these variables before running the sample.# Example: `projects/{project}/locations/{location}/collections/{default_collection}/dataStores/{search_engine_id}/branches/{0}/operations/{operation_id}`# operation_name = "YOUR_OPERATION_NAME"defcancel_operation_sample(operation_name:str)->None:# Create a clientclient=discoveryengine.DocumentServiceClient()# Make CancelOperation requestrequest=operations_pb2.CancelOperationRequest(name=operation_name)client.cancel_operation(request=request)returnExcept as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2026-02-18 UTC.