批量提取

通过数据 Feed,您可以在“Google 订餐”中展示您的餐馆、服务和菜单。

本文档介绍了如何托管沙盒和生产环境清单,以及如何使用批量提取来更新 Order with Google 中的商品目录。

数据 Feed 环境

有三种数据 Feed 环境可用于集成开发:

Feed 环境 说明 批量注入
沙盒 Feed 测试的测试环境。 必需
生产环境 要启动的广告资源的生产环境。 必需

托管数据 Feed

为了让 Order with Google 通过批量提取的方式处理您的沙盒环境数据和生产环境数据 Feed,您必须在 Google Cloud Storage、Amazon S3 或 HTTPS 中通过站点地图托管您的数据 Feed 文件。

我们建议您分别为沙盒环境和生产环境托管数据 Feed。使用此方法,您可以在将更改部署到生产环境之前,在沙盒 Feed 环境中进行开发和测试。

例如,如果您使用 Google Cloud Storage 作为托管选项,则您的路径如下:

  • 沙盒 Feedgs://foorestaurant-google-feed-sandbox/
  • 生产 Feedgs://foorestaurant-google-feed-prod/

如需托管您的广告资源,请执行以下操作:

  1. 生成您的数据 Feed 文件。
  2. 选择托管解决方案。
  3. 托管您的数据 Feed。
  4. 确保您的数据 Feed 文件会定期更新。生产数据 Feed 必须每天更新。

如需详细了解如何创建商品目录 Feed,请参阅 RestaurantServiceMenu 实体的文档以及创建数据 Feed 部分。

数据 Feed 文件指南

每个文件(可包含多个实体)不得超过 200 MB。顶级实体 RestaurantServiceMenu 及其子实体的总大小不得超过 4 MB。

选择托管解决方案

下表列出了托管数据 Feed 的选项,以及这些主机如何与 Order with Google 配合使用:

Amazon S3 Google Cloud Storage 含站点地图的 HTTPS
凭据和访问权限

向 Google 提供以下信息:

  • 访问密钥 ID
  • 私有访问密钥
  • 指向生产环境和沙盒 S3 目录以及 marker.txt 文件的路径。路径必须以 s3:// 开头。

S3 存储分区需要包含以下信息:

  • 商品目录的 Feed 文件。
  • marker.txt,其中包含用于提取的时间戳。

marker.txt 文件示例:2018-12-03T08:30:42.694Z

向 Google 提供生产和沙盒存储分区目录及 marker.txt 文件的路径。路径必须以 gs:// 开头。

将 Google 顾问提供的服务帐号添加为 Google Cloud Storage 存储分区的读取者。

如需详细了解如何控制 Google Cloud Storage (GCS) 的访问权限,请参阅 Google Cloud Platform Console:设置存储分区权限

GCS 存储分区需要包含以下信息:

  • 商品目录的 Feed 文件。
  • marker.txt,其中包含用于提取的时间戳。

marker.txt 文件示例:2018-12-03T08:30:42.694Z

向 Google 提供以下信息:

  • 基本身份验证的凭据。
  • 指向生产环境和沙盒站点地图的路径。 路径必须以 https:// 开头。
  • 协议:您必须通过 HTTPS(而非 HTTP)提供 Feed 文件。
  • 安全:Google 强烈建议您使用基本身份验证来保护托管的 Feed 文件。
Google 如何知道需要提取哪些文件 存储分区中所有文件的目录列表。 存储分区中所有文件的目录列表。 站点地图中列出的文件的各个网址。
Google 如何确定文件已可提取 生成数据 Feed 后,请使用最新时间戳更新 marker.txt 文件。 生成数据 Feed 后,请使用最新时间戳更新 marker.txt 文件。 生成数据 Feed 后,使用最新时间戳更新 sitemap.xml 的响应标头 last-modified
文件限制

文件数量上限:10 万个。

Amazon S3 存储分区中的文件总数必须少于 100000。

文件数量上限:10 万个。

您的 Google Cloud Storage 存储分区中的文件总数必须少于 100000 个。

文件数量上限:10 万个。

站点地图 XML 文件中的文件路径数量必须小于 100000。

关联数据 Feed 以进行批量提取

托管 Feed 后,您需要通过合作伙伴门户将 Feed 关联到您的项目。生产 Feed 的初始配置在初始配置任务页面上完成。以后,任何具有管理角色的门户用户可以随时从配置 > Feed 页面更新生产 Feed 和沙盒 Feed 配置。沙盒环境用于开发和测试,而生产环境 Feed 则向用户显示。

如果您使用 Amazon S3 托管数据 Feed

  1. 合作伙伴门户中,转到配置 > Feed
  2. 点击修改,并填写更新 Feed 表单:

    • Feed 传送方式:设置为 Amazon S3
    • Marker File(标记文件):提供 marker.txt 文件的网址。
    • 数据文件:提供包含数据 Feed 的 S3 存储分区的网址。
    • Access ID:输入有权从 S3 资源读取数据的 IAM 访问密钥 ID
    • 访问密钥:输入有权从 S3 资源读取数据的 IAM 私有访问密钥
  3. 点击提交
  4. 一到两个小时后,请检查批量提取是否提取了您的 Feed 文件。

如果您使用 Google Cloud Storage 托管数据 Feed

  1. 合作伙伴门户中,转到配置 > Feed
  2. 点击修改,并填写更新 Feed 表单:

    • Feed 传送方式:设置为 Google Cloud Storage
    • Marker File(标记文件):提供 marker.txt 文件的网址。
    • 数据文件:提供包含数据 Feed 的 GCS 存储分区的网址。
  3. 点击提交
  4. 创建服务帐号以访问您的 GCS 存储分区。初始配置任务完成后,您可以在配置 Feed 中找到帐号名称。此服务帐号需要“Storage Legacy Object Reader”角色。您可以在 Google Cloud Console 的 IAM 页面中将此角色授予服务帐号。
  5. 一到两个小时后,请检查批量提取是否提取了您的 Feed 文件。

如果您使用 HTTPS 托管数据 Feed

  1. 合作伙伴门户中,转到配置 > Feed
  2. 点击修改,并填写更新 Feed 表单:

    • Feed 传送方式:设置为 HTTPS
    • 站点地图文件:提供 sitemap.xml 文件的网址。
    • 用户名:输入用于访问 HTTPS 服务器的用户名凭据。
    • Password:输入密码以访问 HTTPS 服务器。
  3. 点击提交
  4. 一到两个小时后,请检查批量提取是否提取了您的 Feed 文件。

路径示例

下表包含各托管选项的示例路径:

Amazon S3 Google Cloud Storage 含站点地图的 HTTPS
路径 s3://foorestaurant-google-feed-sandbox/ gs://foorestaurant-google-feed-sandbox/ https://sandbox-foorestaurant.com/sitemap.xml
标记文件 s3://foorestaurant-google-feed-sandbox/marker.txt gs://foorestaurant-google-feed-sandbox/marker.txt 不适用

HTTPS 托管的站点地图

定义站点地图时,请遵循以下准则:

  • 站点地图中的链接必须指向这些文件本身。
  • 如果您的站点地图引用了云服务提供商而不是您自己的域名,请确保网址开头部分(如 https://www.yourcloudprovider.com/your_id)开始稳定且是您的批处理作业独有的网址。
  • 请注意不要上传不完整的站点地图(例如在上传部分数据时)。这样做会导致 Google 仅提取站点地图中的文件,这会导致您的广告资源级别下降,还可能导致 Feed 提取被阻止。
  • 确保站点地图中引用的文件的路径不会更改。例如,今天不要让站点地图引用 https://www.yourcloudprovider.com/your_id/10000.json,而是明天引用 https://www.yourcloudprovider.com/your_id/20000.json
站点地图示例

下面是一个投放数据 Feed 文件的 sitemap.xml 文件示例:

示例 1:按商家分组的实体(推荐)。

XML

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
 <url>
   <loc>https://your_fulfillment_url.com/restaurant_1.ndjson</loc>
   <lastmod>2018-06-11T10:46:43+05:30</lastmod>
 </url>
 <url>
   <loc>https://your_fulfillment_url.com/restaurant_2.ndjson</loc>
   <lastmod>2018-06-11T10:46:43+05:30</lastmod>
 </url>
 <url>
   <loc>https://your_fulfillment_url.com/restaurant_3.ndjson</loc>
   <lastmod>2018-06-11T10:46:43+05:30</lastmod>
 </url>
</urlset>

示例 2:按类型分组的实体。

XML

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
 <url>
   <loc>https://your_fulfillment_url.com/restaurant.json</loc>
   <lastmod>2018-06-11T10:46:43+05:30</lastmod>
 </url>
 <url>
   <loc>https://your_fulfillment_url.com/menu.json</loc>
   <lastmod>2018-06-11T10:46:43+05:30</lastmod>
 </url>
 <url>
   <loc>https://your_fulfillment_url.com/service.json</loc>
   <lastmod>2018-06-11T10:46:43+05:30</lastmod>
 </url>
</urlset>

更新数据 Feed

数据 Feed 建立关联后,Google 会每小时检查一次,但只有在修改 marker.txtsitemap.xml 文件时,才会提取所有数据 Feed。我们希望您每天更新一次数据 Feed,以防出现过时的广告资源。

如需指定数据 Feed 已修改并准备好进行批量提取,请更新 marker.txt 文件的 last-modified 对象元数据字段(对于 GCP 和 S3)或 sitemap.xml 文件的 last-modified 响应标头。Google 使用这些值来确定数据 Feed 的新鲜度。

提取批量 Feed 时,

  • 当前 OwG 商品目录中不存在且没有任何错误的新实体将插入。
  • 如果实体已经存在于商品目录中,且提取时没有任何错误,或者存在比当前条目晚的 dateModified,或者没有 dateModified,则 Feed 提取开始时间比当前条目更新时间晚,否则就会被标记为过时。
  • 如果 Feed 中不再存在正在处理的批量 Feed,这些实体将被删除,但 Feed 中不存在文件级错误。

只有在生成和更新所有数据 Feed 文件后,才能更新时间戳或 last-modified 响应标头。将更新数据 Feed 的批处理作业限制为每天仅运行一次。或者,每个批量作业之间至少要有三个小时的间隔。如果您不采取这些措施,Google 可能会提取过时的文件。