Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Ressourcen löschen

Sie können die von der API erstellten Ressourcen zu Referenzbildern, Produkten oder Produktgruppen löschen.

Einzelne Ressourcen löschen

Referenzbild löschen

Sie können ein Referenzbild, das einem Produkt zugeordnet ist, löschen.

Nach der Vorgangsanfrage werden die Bilder zum Löschen markiert, bleiben aber bis zur nächsten Indexaktualisierung im Produkt vorhanden.

Die tatsächlichen Bilddateien in Cloud Storage werden bei diesem Vorgang NICHT gelöscht. Es wird nur der Verweis auf das Bild im Produkt entfernt.

REST & CMD LINE

Bevor Sie die unten aufgeführten Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

  • project-id: die ID Ihres GCP-Projekts.
  • location-id: eine gültige Standort-ID. Gültige Standort-IDs sind: us-west1, us-east1, europe-west1 und asia-east1.
  • product-id: die ID des Produkts, das mit einem Referenzbild verknüpft ist. Diese ID wird entweder zufällig festgelegt oder vom Nutzer bei der Erstellung des Produkts angegeben.
  • image-id: die ID der Zielbildressource.

HTTP-Methode und URL:

DELETE https://vision.googleapis.com/v1/projects/project-id/locations/location-id/products/product-id/referenceImages/image-id

Senden Sie die Anfrage mithilfe einer der folgenden Optionen:

curl

Führen Sie folgenden Befehl aus:

curl -X DELETE \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
https://vision.googleapis.com/v1/projects/project-id/locations/location-id/products/product-id/referenceImages/image-id

PowerShell

Führen Sie folgenden Befehl aus:

$cred = gcloud auth application-default print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://vision.googleapis.com/v1/projects/project-id/locations/location-id/products/product-id/referenceImages/image-id" | Select-Object -Expand Content

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{}

C#

private static int DeleteReferenceImage(DeleteReferenceImageOptions opts)
{
    var client = ProductSearchClient.Create();
    var request = new DeleteReferenceImageRequest
    {
        // Get the full path of the reference image.
        ReferenceImageName = new ReferenceImageName(opts.ProjectID,
                                                    opts.ComputeRegion,
                                                    opts.ProductID,
                                                    opts.ReferenceImageID)
    };

    client.DeleteReferenceImage(request);
    Console.WriteLine("Reference image deleted from product.");
    return 0;
}

Go


import (
	"context"
	"fmt"
	"io"

	vision "cloud.google.com/go/vision/apiv1"
	visionpb "google.golang.org/genproto/googleapis/cloud/vision/v1"
)

// deleteReferenceImage deletes a reference image from a product.
func deleteReferenceImage(w io.Writer, projectID string, location string, productID string, referenceImageID string) error {
	ctx := context.Background()
	c, err := vision.NewProductSearchClient(ctx)
	if err != nil {
		return fmt.Errorf("NewProductSearchClient: %v", err)
	}
	defer c.Close()

	req := &visionpb.DeleteReferenceImageRequest{
		Name: fmt.Sprintf("projects/%s/locations/%s/products/%s/referenceImages/%s", projectID, location, productID, referenceImageID),
	}

	if err = c.DeleteReferenceImage(ctx, req); err != nil {
		return fmt.Errorf("NewProductSearchClient: %v", err)
	}

	fmt.Fprintf(w, "Reference image deleted from product.\n")

	return nil
}

Java

/**
 * Delete a reference image.
 *
 * @param projectId - Id of the project.
 * @param computeRegion - Region name.
 * @param productId - Id of the product.
 * @param referenceImageId - Id of the image.
 * @throws IOException - on I/O errors.
 */
public static void deleteReferenceImage(
    String projectId, String computeRegion, String productId, String referenceImageId)
    throws IOException {
  try (ProductSearchClient client = ProductSearchClient.create()) {

    // Get the full path of the reference image.
    String formattedName =
        ImageName.format(projectId, computeRegion, productId, referenceImageId);
    // Delete the reference image.
    client.deleteReferenceImage(formattedName);
    System.out.println("Reference image deleted from product.");
  }
}

Node.js

const vision = require('@google-cloud/vision');

const client = new vision.ProductSearchClient();

async function deleteReferenceImage() {
  /**
   * TODO(developer): Uncomment the following line before running the sample.
   */
  // const projectId = 'Your Google Cloud project Id';
  // const location = 'A compute region name';
  // const productId = 'Id of the product';
  // const referenceImageId = 'Id of the reference image';

  const formattedName = client.referenceImagePath(
    projectId,
    location,
    productId,
    referenceImageId
  );

  const request = {
    name: formattedName,
  };

  await client.deleteReferenceImage(request);
  console.log('Reference image deleted from product.');
}
deleteReferenceImage();

PHP

namespace Google\Cloud\Samples\Vision;

use Google\Cloud\Vision\V1\ProductSearchClient;

/**
 * Delete a reference image
 *
 * @param string $projectId Your Google Cloud project ID
 * @param string $location Google Cloud compute region name
 * @param string $productId ID of the product
 * @param string $referenceImageId ID of the reference image
 */
function product_image_delete($projectId, $location, $productId, $referenceImageId)
{
    $client = new ProductSearchClient();

    # get the name of the reference image.
    $referenceImagePath = $client->referenceImageName($projectId, $location, $productId, $referenceImageId);

    # delete the reference image
    $client->deleteReferenceImage($referenceImagePath);
    print('Reference image deleted from product.');

    $client->close();
}

Python

from google.cloud import vision

def delete_reference_image(
        project_id, location, product_id, reference_image_id):
    """Delete a reference image.
    Args:
        project_id: Id of the project.
        location: A compute region name.
        product_id: Id of the product.
        reference_image_id: Id of the reference image.
    """
    client = vision.ProductSearchClient()

    # Get the full path of the reference image.
    reference_image_path = client.reference_image_path(
        project=project_id, location=location, product=product_id,
        reference_image=reference_image_id)

    # Delete the reference image.
    client.delete_reference_image(name=reference_image_path)
    print('Reference image deleted from product.')

Ruby

require "google/cloud/vision"

def product_search_delete_reference_image project_id = "your-project-id",
                                          location   = "us-west1",
                                          product_id = "your-product-id",
                                          image_id   = "your-image-id"

  client = Google::Cloud::Vision.product_search

  reference_image_path = client.reference_image_path project:         project_id,
                                                     location:        location,
                                                     product:         product_id,
                                                     reference_image: image_id

  client.delete_reference_image name: reference_image_path

  puts "Reference image #{image_id} deleted from product #{product_id}."
end

Produkt löschen

Sie können ein Produkt, das einem bestimmten Projekt zugeordnet ist, löschen.

Wenn Sie ein Produkt löschen, werden auch alle untergeordneten Bilder gelöscht.

REST & CMD LINE

Bevor Sie die unten aufgeführten Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

  • project-id: die ID Ihres GCP-Projekts.
  • location-id: eine gültige Standort-ID. Gültige Standort-IDs sind: us-west1, us-east1, europe-west1 und asia-east1.
  • product-id: die ID des Produkts, das mit einem Referenzbild verknüpft ist. Diese ID wird entweder zufällig festgelegt oder vom Nutzer bei der Erstellung des Produkts angegeben.

HTTP-Methode und URL:

DELETE https://vision.googleapis.com/v1/projects/project-id/locations/location-id/products/product-id

Senden Sie die Anfrage mithilfe einer der folgenden Optionen:

curl

Führen Sie folgenden Befehl aus:

curl -X DELETE \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
https://vision.googleapis.com/v1/projects/project-id/locations/location-id/products/product-id

PowerShell

Führen Sie folgenden Befehl aus:

$cred = gcloud auth application-default print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://vision.googleapis.com/v1/projects/project-id/locations/location-id/products/product-id" | Select-Object -Expand Content

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{}

C#

private static int DeleteProduct(DeleteProductOptions opts)
{
    var client = ProductSearchClient.Create();
    var request = new DeleteProductRequest
    {
        // Get the full path of the product.
        ProductName = new ProductName(opts.ProjectID,
                                     opts.ComputeRegion,
                                     opts.ProductID)
    };

    client.DeleteProduct(request);
    Console.WriteLine("Product deleted.");

    return 0;
}

Go


import (
	"context"
	"fmt"
	"io"

	vision "cloud.google.com/go/vision/apiv1"
	visionpb "google.golang.org/genproto/googleapis/cloud/vision/v1"
)

// deleteProduct deletes a product.
func deleteProduct(w io.Writer, projectID string, location string, productID string) error {
	ctx := context.Background()
	c, err := vision.NewProductSearchClient(ctx)
	if err != nil {
		return fmt.Errorf("NewProductSearchClient: %v", err)
	}
	defer c.Close()

	req := &visionpb.DeleteProductRequest{
		Name: fmt.Sprintf("projects/%s/locations/%s/products/%s", projectID, location, productID),
	}

	if err = c.DeleteProduct(ctx, req); err != nil {
		return fmt.Errorf("NewProductSearchClient: %v", err)
	}

	fmt.Fprintf(w, "Product deleted.\n")

	return nil
}

Java

/**
 * Delete the product and all its reference images.
 *
 * @param projectId - Id of the project.
 * @param computeRegion - Region name.
 * @param productId - Id of the product.
 * @throws IOException - on I/O errors.
 */
public static void deleteProduct(String projectId, String computeRegion, String productId)
    throws IOException {
  try (ProductSearchClient client = ProductSearchClient.create()) {

    // Get the full path of the product.
    String formattedName =
        ProductSearchClient.formatProductName(projectId, computeRegion, productId);

    // Delete a product.
    client.deleteProduct(formattedName);
    System.out.println("Product deleted.");
  }
}

Node.js

// Imports the Google Cloud client library
const vision = require('@google-cloud/vision');

// Creates a client
const client = new vision.ProductSearchClient();

async function deleteProduct() {
  /**
   * TODO(developer): Uncomment the following line before running the sample.
   */
  // const projectId = 'Your Google Cloud project Id';
  // const location = 'A compute region name';
  // const productId = 'Id of the product';

  // Resource path that represents full path to the product.
  const productPath = client.productPath(projectId, location, productId);

  await client.deleteProduct({name: productPath});
  console.log('Product deleted.');
}
deleteProduct();

PHP

namespace Google\Cloud\Samples\Vision;

use Google\Cloud\Vision\V1\ProductSearchClient;

/**
 * Delete the product and all its reference images.
 *
 * @param string $projectId Your Google Cloud project ID
 * @param string $location Google Cloud compute region name
 * @param string $productId ID of the product
 */
function product_delete($projectId, $location, $productId)
{
    $client = new ProductSearchClient();

    # get the name of the product.
    $productPath = $client->productName($projectId, $location, $productId);

    # delete the product
    $client->deleteProduct($productPath);
    print('Product deleted.' . PHP_EOL);

    $client->close();
}

Python

from google.cloud import vision
from google.protobuf import field_mask_pb2 as field_mask

def delete_product(project_id, location, product_id):
    """Delete the product and all its reference images.
    Args:
        project_id: Id of the project.
        location: A compute region name.
        product_id: Id of the product.
    """
    client = vision.ProductSearchClient()

    # Get the full path of the product.
    product_path = client.product_path(
        project=project_id, location=location, product=product_id)

    # Delete a product.
    client.delete_product(name=product_path)
    print('Product deleted.')

Ruby

require "google/cloud/vision"

def product_search_delete_product project_id = "your-project-id",
                                  location   = "us-west1",
                                  product_id = "your-product_id"

  client = Google::Cloud::Vision.product_search

  product_path = client.product_path project:  project_id,
                                     location: location,
                                     product:  product_id

  client.delete_product name: product_path

  puts "Product #{product_id} deleted."
end

Produktgruppe löschen

Sie können auch eine Produktgruppe löschen.

Eine gelöschte Produktgruppe wird unmittelbar aus den Ergebnissen entfernt. Durch das Löschen einer Produktgruppe werden jedoch nicht die einzelnen Produkte in der Gruppe entfernt, da ein Produkt zu mehreren Gruppen gehören kann. Die Änderung spiegelt sich nicht erst bei der nächsten Indexaktualisierung wider.

Die tatsächlichen Bilddateien in Cloud Storage werden bei diesem Vorgang NICHT gelöscht. ReferenceImage-Ressourcen, die von der API erstellt wurden, werden nicht entfernt.

REST & CMD LINE

Bevor Sie die unten aufgeführten Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

  • project-id: die ID Ihres GCP-Projekts.
  • location-id: eine gültige Standort-ID. Gültige Standort-IDs sind us-west1, us-east1, europe-west1 und asia-east1.
  • product-set-id: die ID der Produktgruppe, für die Sie den Vorgang ausführen möchten.

HTTP-Methode und URL:

DELETE https://vision.googleapis.com/v1/projects/project-id/locations/location-id/productSets/product-set-id

Senden Sie die Anfrage mithilfe einer der folgenden Optionen:

curl

Führen Sie folgenden Befehl aus:

curl -X DELETE \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
https://vision.googleapis.com/v1/projects/project-id/locations/location-id/productSets/product-set-id

PowerShell

Führen Sie folgenden Befehl aus:

$cred = gcloud auth application-default print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://vision.googleapis.com/v1/projects/project-id/locations/location-id/productSets/product-set-id" | Select-Object -Expand Content

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{}

C#

        private static object DeleteProductSet(DeleteProductSetOptions opts)
        {
            var client = ProductSearchClient.Create();
            var request = new DeleteProductSetRequest
            {
                // Get the full path of the product set.
                ProductSetName = new ProductSetName(opts.ProjectID,
                                                    opts.ComputeRegion,
                                                    opts.ProductSetId)
            };

            // Delete the product set.
            client.DeleteProductSet(request);

            Console.WriteLine("Product set deleted.");
            return 0;
        }

Go


import (
	"context"
	"fmt"
	"io"

	vision "cloud.google.com/go/vision/apiv1"
	visionpb "google.golang.org/genproto/googleapis/cloud/vision/v1"
)

// deleteProductSet deletes a product set.
func deleteProductSet(w io.Writer, projectID string, location string, productSetID string) error {
	ctx := context.Background()
	c, err := vision.NewProductSearchClient(ctx)
	if err != nil {
		return fmt.Errorf("NewProductSearchClient: %v", err)
	}
	defer c.Close()

	req := &visionpb.DeleteProductSetRequest{
		Name: fmt.Sprintf("projects/%s/locations/%s/productSets/%s", projectID, location, productSetID),
	}

	if err = c.DeleteProductSet(ctx, req); err != nil {
		return fmt.Errorf("NewProductSearchClient: %v", err)
	}

	fmt.Fprintln(w, "Product set deleted.")

	return nil
}

Java

/**
 * Delete a product set.
 *
 * @param projectId - Id of the project.
 * @param computeRegion - Region name.
 * @param productSetId - Id of the product set.
 * @throws IOException - on I/O errors.
 */
public static void deleteProductSet(String projectId, String computeRegion, String productSetId)
    throws IOException {
  try (ProductSearchClient client = ProductSearchClient.create()) {

    // Get the full path of the product set.
    String formattedName =
        ProductSearchClient.formatProductSetName(projectId, computeRegion, productSetId);
    // Delete the product set.
    client.deleteProductSet(formattedName);
    System.out.println(String.format("Product set deleted"));
  }
}

Node.js

// Imports the Google Cloud client library
const vision = require('@google-cloud/vision');

// Creates a client
const client = new vision.ProductSearchClient();

async function deleteProductSet() {
  /**
   * TODO(developer): Uncomment the following line before running the sample.
   */
  // const projectId = 'Your Google Cloud project Id';
  // const location = 'A compute region name';
  // const productSetId = 'Id of the product set';

  // Resource path that represents full path to the product set.
  const productSetPath = client.productSetPath(
    projectId,
    location,
    productSetId
  );

  await client.deleteProductSet({name: productSetPath});
  console.log('Product set deleted.');
}
deleteProductSet();

PHP

namespace Google\Cloud\Samples\Vision;

use Google\Cloud\Vision\V1\ProductSearchClient;

/**
 * Deletes product set
 *
 * @param string $projectId Your Google Cloud project ID
 * @param string $location Google Cloud compute region name
 * @param string $productSetId ID of the product
 */
function product_set_delete($projectId, $location, $productSetId)
{
    $client = new ProductSearchClient();

    # get the name of the product set
    $productSetPath = $client->productSetName($projectId, $location, $productSetId);

    # delete the product set
    $client->deleteProductSet($productSetPath);
    print('Product set deleted.' . PHP_EOL);

    $client->close();
}

Python

from google.cloud import vision

def delete_product_set(project_id, location, product_set_id):
    """Delete a product set.
    Args:
        project_id: Id of the project.
        location: A compute region name.
        product_set_id: Id of the product set.
    """
    client = vision.ProductSearchClient()

    # Get the full path of the product set.
    product_set_path = client.product_set_path(
        project=project_id, location=location,
        product_set=product_set_id)

    # Delete the product set.
    client.delete_product_set(name=product_set_path)
    print('Product set deleted.')

Ruby

require "google/cloud/vision"

def product_search_delete_product_set project_id     = "your-project-id",
                                      location       = "us-west1",
                                      product_set_id = "your-product-set-id"

  client = Google::Cloud::Vision.product_search

  product_set_path = client.product_set_path project:     project_id,
                                             location:    location,
                                             product_set: product_set_id

  client.delete_product_set name: product_set_path

  puts "Product set #{product_set_id} deleted."
end

Ressourcen im Batch löschen

Sie können Produkte jetzt im Batch löschen. Das Löschen von Produkten im Batch ist für die folgenden Produkttypen verfügbar:

  • Alle Produkte in einer bestimmten Produktgruppe
  • Alle Produkte, die zu keiner Produktgruppe gehören

Damit Fehler in Verbindung mit gleichzeitig ausgeführten Vorgängen vermieden werden, sollten Sie mit dem Löschen der Produktgruppe warten, bis dieser Batchlöschvorgang für die Produkte abgeschlossen ist. Warten Sie auch den Abschluss des Batchlöschvorgangs ab, wenn Sie die geleerte Produktgruppe wiederverwenden und neue Produkte importieren möchten.

Dies gilt auch für einzelne Produkte: Führen Sie möglichst keine Aktionen für einzelne Produkte aus, die vom Batchlöschvorgang betroffen sind. Beispielsweise sollten Sie keines dieser Produkte in eine andere Produktgruppe aufnehmen, da es letztendlich gelöscht wird.

Produkte in einer Produktgruppe löschen

Sie können alle Produkte in einer bestimmten Produktgruppe löschen. Dazu geben Sie in der Anfrage die Produktgruppen-ID an.

Alle Produkte in der Produktgruppe werden gelöscht, unabhängig davon, ob sie zu anderen Produktgruppen gehören.

REST & CMD LINE

Bevor Sie die unten aufgeführten Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

  • project-id: die ID Ihres GCP-Projekts.
  • location-id: eine gültige Standort-ID. Gültige Standort-IDs sind us-west1, us-east1, europe-west1 und asia-east1.
  • product-set-id: die ID der Produktgruppe, für die Sie den Vorgang ausführen möchten.

HTTP-Methode und URL:

POST https://vision.googleapis.com/v1/projects/project-id/locations/location-id/products:purge

JSON-Text der Anfrage:

{
  "force": "true",
  "productSetPurgeConfig": {
    "productSetId": "product-set-id"
  }
}

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

curl -X POST \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
https://vision.googleapis.com/v1/projects/project-id/locations/location-id/products:purge

PowerShell

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

$cred = gcloud auth application-default print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://vision.googleapis.com/v1/projects/project-id/locations/location-id/products:purge" | Select-Object -Expand Content

Diese Anfrage startet einen Vorgang mit langer Ausführungszeit. Die JSON-Antwort enthält Informationen zu diesem Vorgang mit langer Ausführungszeit:

{
"name": "projects/project-id/locations/location-id/operations/bc4e1d412863e626"
}

In diesem Fall ist die operation-id bc4e1d412863e626.

Sie können den Fortschritt dieses Vorgangs mithilfe von operation-id verfolgen. Ein Beispiel für das Abrufen des Status eines Vorgangs finden Sie unter Status eines Vorgangs abrufen.

C#

private static int PurgeProductsInProductSet(PurgeProductsInProductSetOptions opts)
{
    var client = ProductSearchClient.Create();
    var parent = LocationName.Format(opts.ProjectID, opts.ComputeRegion);
    var productSetPurgeConfig = new ProductSetPurgeConfig
    {
        ProductSetId = opts.ProductSetId
    };
    var req = new PurgeProductsRequest
    {
        Parent = parent,
        ProductSetPurgeConfig = productSetPurgeConfig,
        Force = true
    };

    var response = client.PurgeProductsAsync(req);

    // wait until it finishes
    response.Result.PollUntilCompleted();

    Console.WriteLine("Products removed from product set.");
    return 0;
}

Go

import (
	"context"
	"fmt"
	"io"

	vision "cloud.google.com/go/vision/apiv1"
	visionpb "google.golang.org/genproto/googleapis/cloud/vision/v1"
)

// purgeProductsInProductSet deletes all products in a product set.
func purgeProductsInProductSet(w io.Writer, projectID string, location string, productSetID string) error {
	// projectID := "your-gcp-project-id"
	// location := "us-west1"
	// productSetID := "sampleProductSetID"

	ctx := context.Background()
	c, err := vision.NewProductSearchClient(ctx)
	if err != nil {
		return fmt.Errorf("NewProductSearchClient: %v", err)
	}
	defer c.Close()

	req := &visionpb.PurgeProductsRequest{
		Parent: fmt.Sprintf("projects/%s/locations/%s", projectID, location),
		Target: &visionpb.PurgeProductsRequest_ProductSetPurgeConfig{
			ProductSetPurgeConfig: &visionpb.ProductSetPurgeConfig{
				ProductSetId: productSetID,
			},
		},
		Force: true,
	}

	// The purge operation is async.
	op, err := c.PurgeProducts(ctx, req)
	if err != nil {
		return fmt.Errorf("PurgeProducts: %v", err)
	}
	fmt.Fprintf(w, "Processing operation name: %q\n", op.Name())

	if err := op.Wait(ctx); err != nil {
		return fmt.Errorf("Wait: %v", err)
	}

	fmt.Fprintf(w, "Deleted products in product set.\n")

	return nil
}

Java

import com.google.api.gax.longrunning.OperationFuture;
import com.google.cloud.vision.v1.BatchOperationMetadata;
import com.google.cloud.vision.v1.LocationName;
import com.google.cloud.vision.v1.ProductSearchClient;
import com.google.cloud.vision.v1.ProductSetPurgeConfig;
import com.google.cloud.vision.v1.PurgeProductsRequest;
import com.google.protobuf.Empty;
import java.util.concurrent.TimeUnit;

public class PurgeProductsInProductSet {

  // Delete all products in a product set.
  public static void purgeProductsInProductSet(
      String projectId, String location, String productSetId) throws Exception {

    // String projectId = "YOUR_PROJECT_ID";
    // String location = "us-central1";
    // String productSetId = "YOUR_PRODUCT_SET_ID";
    // boolean force = true;

    try (ProductSearchClient client = ProductSearchClient.create()) {

      String parent = LocationName.format(projectId, location);
      ProductSetPurgeConfig productSetPurgeConfig =
          ProductSetPurgeConfig.newBuilder().setProductSetId(productSetId).build();

      PurgeProductsRequest request =
          PurgeProductsRequest.newBuilder()
              .setParent(parent)
              .setProductSetPurgeConfig(productSetPurgeConfig)
              // The operation is irreversible and removes multiple products.
              // The user is required to pass in force=True to actually perform the
              // purge.
              // If force is not set to True, the service raises an exception.
              .setForce(true)
              .build();

      OperationFuture<Empty, BatchOperationMetadata> response = client.purgeProductsAsync(request);
      response.getPollingFuture().get(180, TimeUnit.SECONDS);

      System.out.println("Products removed from product set.");
    }
  }
}

Node.js

// Imports the Google Cloud client library
const vision = require('@google-cloud/vision');

// Creates a client
const client = new vision.ProductSearchClient();

async function purgeProductsInProductSet() {
  // Deletes all products in a product set.

  /**
   * TODO(developer): Uncomment the following line before running the sample.
   */
  // const projectId = 'Your Google Cloud project Id';
  // const location = 'A compute region name';
  // const productSetId = 'Id of the product set';

  const formattedParent = client.locationPath(projectId, location);
  const purgeConfig = {productSetId: productSetId};

  // The operation is irreversible and removes multiple products.
  // The user is required to pass in force=true to actually perform the purge.
  // If force is not set to True, the service raises an error.
  const force = true;

  try {
    const [operation] = await client.purgeProducts({
      parent: formattedParent,
      productSetPurgeConfig: purgeConfig,
      force: force,
    });
    await operation.promise();
    console.log('Products removed from product set.');
  } catch (err) {
    console.log(err);
  }
}
purgeProductsInProductSet();

PHP

namespace Google\Cloud\Samples\Vision;

use Google\Cloud\Vision\V1\ProductSearchClient;
use Google\Cloud\Vision\V1\ProductSetPurgeConfig;

/**
 * Delete all products in a product set.
 *
 * @param string $projectId Your Google Cloud project ID
 * @param string $location Google Cloud compute region name
 * @param string $product_set_id ID of the product
 * @param boolean $force force purge
 */
function purge_products_in_product_set($projectId, $location, $product_set_id, $force)
{
    $client = new ProductSearchClient();

    $parent = $client->locationName($projectId, $location);
    $product_set_purge_config = (new ProductSetPurgeConfig())->setProductSetId($product_set_id);
    printf("Deleting products in product-set: %s" . PHP_EOL, $product_set_id);
    $operationResponse  = $client->purgeProducts($parent, ['productSetPurgeConfig' => $product_set_purge_config,
        'force' => $force]);
    $operationResponse->pollUntilComplete();
    if ($operationResponse->operationSucceeded()) {
        print('Operation succeeded' . PHP_EOL);
    # print_r($operationResponse->getResult());
    } else {
        print('Operation failed' . PHP_EOL);
        print_r($operationResponse->getError());
    }
    $client->close();
}

Python

from google.cloud import vision

def purge_products_in_product_set(
        project_id, location, product_set_id, force):
    """Delete all products in a product set.
    Args:
        project_id: Id of the project.
        location: A compute region name.
        product_set_id: Id of the product set.
        force: Perform the purge only when force is set to True.
    """
    client = vision.ProductSearchClient()

    parent = f"projects/{project_id}/locations/{location}"

    product_set_purge_config = vision.ProductSetPurgeConfig(
        product_set_id=product_set_id)

    # The purge operation is async.
    operation = client.purge_products(request={
        "parent": parent,
        "product_set_purge_config": product_set_purge_config,
        # The operation is irreversible and removes multiple products.
        # The user is required to pass in force=True to actually perform the
        # purge.
        # If force is not set to True, the service raises an exception.
        "force": force
    })

    operation.result(timeout=300)

    print('Deleted products in product set.')

Ruby

require "google/cloud/vision"

# Delete all products in a product set.
def product_search_purge_products_in_product_set \
    project_id     = "your-project-id",
    location       = "us-west1",
    product_set_id = "your-product-set-id"

  client = Google::Cloud::Vision.product_search

  parent = client.location_path project: project_id, location: location

  config = {
    product_set_id: product_set_id
  }

  # The operation is irreversible and removes multiple products.
  # The user is required to pass in force=true to actually perform the purge.
  # If force is not set to true, the service raises an exception.
  force = true

  # The purge operation is async.
  operation = client.purge_products parent:                   parent,
                                    product_set_purge_config: config,
                                    force:                    force

  puts "Processing operation name: #{operation.name}"
  operation.wait_until_done! # Waits for the operation to complete

  puts "Products in product set #{product_set_id} deleted."
end

Verwaiste Produkte löschen

Sie können alle Produkte löschen, die sich nicht in einer Produktgruppe befinden. Dazu geben Sie in der Anfrage die unten gezeigte Option an.

REST & CMD LINE

Bevor Sie die unten aufgeführten Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

  • project-id: die ID Ihres GCP-Projekts.
  • location-id: eine gültige Standort-ID. Gültige Standort-IDs sind us-west1, us-east1, europe-west1 und asia-east1.

HTTP-Methode und URL:

POST https://vision.googleapis.com/v1/projects/project-id/locations/location-id/products:purge

JSON-Text der Anfrage:

{
  "force": "true",
  "deleteOrphanProducts": "true"
}

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

curl -X POST \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
https://vision.googleapis.com/v1/projects/project-id/locations/location-id/products:purge

PowerShell

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

$cred = gcloud auth application-default print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://vision.googleapis.com/v1/projects/project-id/locations/location-id/products:purge" | Select-Object -Expand Content

Diese Anfrage startet einen Vorgang mit langer Ausführungszeit. Die JSON-Antwort enthält Informationen zu diesem Vorgang mit langer Ausführungszeit:

{
"name": "projects/project-id/locations/location-id/operations/bc4e1d412863e626"
}

In diesem Fall ist die operation-id bc4e1d412863e626.

Sie können den Fortschritt dieses Vorgangs mithilfe von operation-id verfolgen. Ein Beispiel für das Abrufen des Status eines Vorgangs finden Sie unter Status eines Vorgangs abrufen.

C#

private static int PurgeOrphanProducts(PurgeOrphanProductsOptions opts)
{
    var client = ProductSearchClient.Create();
    var parent = LocationName.Format(opts.ProjectID, opts.ComputeRegion);

    var request = new PurgeProductsRequest
    {
        Parent = parent,
        DeleteOrphanProducts = true,
        Force = true
    };

    // Purge operation is async.
    var operation = client.PurgeProductsAsync(request);

    // wait until long operation to finish.
    operation.Result.PollUntilCompleted();
    Console.WriteLine("Orphan products deleted.");

    return 0;
}

Go

import (
	"context"
	"fmt"
	"io"

	vision "cloud.google.com/go/vision/apiv1"
	visionpb "google.golang.org/genproto/googleapis/cloud/vision/v1"
)

// purgeOrphanProducts deletes all products not in any product sets.
func purgeOrphanProducts(w io.Writer, projectID string, location string) error {
	// projectID := "your-gcp-project-id"
	// location := "us-west1"

	ctx := context.Background()
	c, err := vision.NewProductSearchClient(ctx)
	if err != nil {
		return fmt.Errorf("NewProductSearchClient: %v", err)
	}
	defer c.Close()

	req := &visionpb.PurgeProductsRequest{
		Parent: fmt.Sprintf("projects/%s/locations/%s", projectID, location),
		Target: &visionpb.PurgeProductsRequest_DeleteOrphanProducts{
			DeleteOrphanProducts: true,
		},
		Force: true,
	}

	// The purge operation is async.
	op, err := c.PurgeProducts(ctx, req)
	if err != nil {
		return fmt.Errorf("NewProductSearchClient: %v", err)
	}
	fmt.Fprintf(w, "Processing operation name: %q\n", op.Name())

	if err := op.Wait(ctx); err != nil {
		return fmt.Errorf("Wait: %v", err)
	}

	fmt.Fprintf(w, "Orphan products deleted.\n")

	return nil
}

Java

import com.google.api.gax.longrunning.OperationFuture;
import com.google.cloud.vision.v1.LocationName;
import com.google.cloud.vision.v1.ProductSearchClient;
import com.google.cloud.vision.v1.PurgeProductsRequest;
import java.util.concurrent.TimeUnit;

public class PurgeProducts {

  // Delete the product and all its reference images.
  public static void purgeOrphanProducts(String projectId, String computeRegion) throws Exception {

    // String projectId = "YOUR_PROJECT_ID";
    // String computeRegion = "us-central1";
    // boolean force = true;

    try (ProductSearchClient client = ProductSearchClient.create()) {
      String parent = LocationName.format(projectId, computeRegion);

      // The purge operation is async.
      PurgeProductsRequest request =
          PurgeProductsRequest.newBuilder()
              .setDeleteOrphanProducts(true)
              // The operation is irreversible and removes multiple products.
              // The user is required to pass in force=True to actually perform the
              // purge.
              // If force is not set to True, the service raises an exception.
              .setForce(true)
              .setParent(parent)
              .build();

      OperationFuture response = client.purgeProductsAsync(request);
      response.getPollingFuture().get(180, TimeUnit.SECONDS);

      System.out.println("Orphan products deleted.");
    }
  }
}

Node.js

// Imports the Google Cloud client library
const vision = require('@google-cloud/vision');

// Creates a client
const client = new vision.ProductSearchClient();

async function purgeOrphanProducts() {
  // Deletes all products not in any product sets.

  /**
   * TODO(developer): Uncomment the following line before running the sample.
   */
  // const projectId = 'Your Google Cloud project Id';
  // const location = 'A compute region name';

  const formattedParent = client.locationPath(projectId, location);

  // The operation is irreversible and removes multiple products.
  // The user is required to pass in force=true to actually perform the purge.
  // If force is not set to True, the service raises an error.
  const force = true;

  try {
    const [operation] = await client.purgeProducts({
      parent: formattedParent,
      deleteOrphanProducts: true,
      force: force,
    });
    await operation.promise();
    console.log('Orphan products deleted.');
  } catch (err) {
    console.log(err);
  }
}
purgeOrphanProducts();

PHP

namespace Google\Cloud\Samples\Vision;

use Google\Cloud\Vision\V1\ProductSearchClient;

/**
 * Delete all products not in any product sets.
 *
 * @param string $projectId Your Google Cloud project ID
 * @param string $location Google Cloud compute region name
 * @param boolean $force force purge
 */
function purge_orphan_products($projectId, $location, $force)
{
    $client = new ProductSearchClient();

    $parent = $client->locationName($projectId, $location);
    printf("Deleting orphan products" . PHP_EOL);
    $operationResponse  = $client->purgeProducts($parent, ['deleteOrphanProducts' => true, 'force' => $force]);
    $operationResponse->pollUntilComplete();
    if ($operationResponse->operationSucceeded()) {
        print('Operation succeeded' . PHP_EOL);
    # print_r($operationResponse->getResult());
    } else {
        print('Operation failed' . PHP_EOL);
        print_r($operationResponse->getError());
    }
    $client->close();
}

Python

from google.cloud import vision
from google.protobuf import field_mask_pb2 as field_mask

def purge_orphan_products(project_id, location, force):
    """Delete all products not in any product sets.
    Args:
        project_id: Id of the project.
        location: A compute region name.
    """
    client = vision.ProductSearchClient()

    parent = f"projects/{project_id}/locations/{location}"

    # The purge operation is async.
    operation = client.purge_products(request={
        "parent": parent,
        "delete_orphan_products": True,
        # The operation is irreversible and removes multiple products.
        # The user is required to pass in force=True to actually perform the
        # purge.
        # If force is not set to True, the service raises an exception.
        "force": force
    })

    operation.result(timeout=300)

    print('Orphan products deleted.')

Ruby

require "google/cloud/vision"

# Delete all products not in any product sets.
def product_search_purge_orphan_products project_id = "your-project-id",
                                         location   = "us-west1"

  client = Google::Cloud::Vision.product_search

  parent = client.location_path project: project_id, location: location

  # The operation is irreversible and removes multiple products.
  # The user is required to pass in force=true to actually perform the purge.
  # If force is not set to true, the service raises an exception.
  force = true

  # The purge operation is async.
  operation = client.purge_products parent:                 parent,
                                    force:                  force,
                                    delete_orphan_products: true

  puts "Processing operation name: #{operation.name}"
  operation.wait_until_done! # Waits for the operation to complete

  puts "Orphan products deleted."
end

Status eines Vorgangs abrufen

Sie können die operation-id eines Vorgang mit langer Ausführungszeit (z. B. Leeren einer Produktgruppe oder Löschen von verwaisten Produkten) verwenden, um dessen Status abzurufen.

REST UND BEFEHLSZEILE

Ersetzen Sie diese Werte in den folgenden Anweisungen:

  • location-id: Eine gültige Standort-ID. Gültige Standort-IDs sind us-west1, us-east1, europe-west1 und asia-east1.
  • operation-id: Die ID des Vorgangs. Die ID ist das letzte Element des Vorgangsnamens. Beispiel:
    • Name des Vorgangs: projects/project-id/locations/location-id/operations/bc4e1d412863e626
    • Vorgangs-ID: bc4e1d412863e626

HTTP-Methode und URL:

GET https://vision.googleapis.com/v1/locations/location-id/operations/operation-id

Senden Sie die Anfrage mithilfe einer der folgenden Optionen:

curl

Führen Sie folgenden Befehl aus:

curl -X GET \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
https://vision.googleapis.com/v1/locations/location-id/operations/operation-id

PowerShell

Führen Sie diesen Befehl aus:

$cred = gcloud auth application-default print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://vision.googleapis.com/v1/locations/location-id/operations/operation-id" | Select-Object -Expand Content
Die Ausgabe für einen abgeschlossenen Löschvorgang der Produktgruppe sollte in etwa so aussehen:
{
  "name": "locations/location-id/operations/operation-id",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.vision.v1.BatchOperationMetadata",
    "state": "SUCCESSFUL",
    "submitTime": "2019-09-04T15:58:39.131591882Z",
    "endTime": "2019-09-04T15:58:43.099020580Z"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.vision.v1.PurgeProductsRequest",
    "parent": "projects/project-id/locations/location-id",
    "productSetPurgeConfig": {
      "productSetId": "project-set-id"
    },
    "force": true
  }
}

Die Ausgabe für einen abgeschlossenen Löschvorgang verwaister Produktvorgänge sollte in etwa so aussehen:

{
  "name": "locations/location-id/operations/operation-id",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.vision.v1.BatchOperationMetadata",
    "state": "SUCCESSFUL",
    "submitTime": "2019-09-04T16:08:38.278197397Z",
    "endTime": "2019-09-04T16:08:45.075778639Z"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.vision.v1.PurgeProductsRequest",
    "parent": "projects/project-id/locations/location-id",
    "deleteOrphanProducts": true,
    "force": true
  }
}