批量注入

利用数据 Feed, 你可以利用“端到端”的方式,提供餐馆、服务和菜单。

本文档介绍了如何托管沙盒和生产环境广告资源以及如何使用批量提取 在“端到端订单”中更新您的商品目录。

数据 Feed 环境

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

Feed 环境 说明 批量提取
沙盒 用于 Feed 开发的测试环境。 必填
生产 您要发布的广告资源的生产环境。 必填

托管数据 Feed

以便端到端地订购产品,以便批量处理沙盒和生产数据 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,请参阅 Restaurant, Service, 和Menu 以及 创建数据 Feed 部分。

数据 Feed 文件准则

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

选择托管解决方案

下表列出了用于托管数据 Feed 的选项以及这些主机如何与 端到端订购:

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 强烈建议您使用 基本身份验证。
Google 如何知道需要提取哪些文件 列出存储分区中所有文件的目录。 列出存储分区中所有文件的目录。 站点地图中列出的各个文件的网址。
Google 如何确定文件已可供抓取 生成数据 Feed 后,请更新 marker.txt 文件 最新的时间戳。 生成数据 Feed 后,请更新 marker.txt 文件 最新的时间戳。 生成数据 Feed 后,请更新响应标头 sitemap.xmllast-modified(采用最新时间戳)。
文件限制

文件数量上限:10 万个。

Amazon S3 存储分区中的文件总数不得超过 10 万个。

文件数量上限:10 万个。

您的 Google Cloud Storage 存储分区中的文件总数不得超过 10 万个。

文件数量上限:10 万个。

站点地图 XML 文件中的文件路径数必须小于 100,000 个。

连接您的数据 Feed 以进行批量提取

托管 Feed 后,您需要在 Actions Center 中将其关联到您的项目。通过 生产 Feed 的初始配置在初始配置任务页面上完成。以后再说 拥有> 管理员角色。沙盒环境用于开发和测试目的,而 向用户展示正式版 Feed。

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

  1. Actions Center(操作中心),前往 Configuration(配置)> Feed
  2. 点击修改,然后填写更新 Feed 表单:

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

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

  1. Actions Center(操作中心),前往 Configuration(配置)> Feed
  2. 点击修改,然后填写更新 Feed 表单:

    • Feed 交付方式:设置为 Google Cloud Storage
    • Marker File:提供 marker.txt 文件的网址。
    • 数据文件:提供包含数据 Feed 的 GCS 存储分区的网址。
  3. 点击提交
  4. 系统会创建一个服务账号,用于访问您的 GCS 存储分区。账号名称可在以下位置找到: 配置 > Feed(完成初始配置任务后) 都没有问题此服务账号需要拥有“Storage Legacy Object Reader”角色。此角色可以 在 Google Cloud 控制台的 IAM 页面中被授予服务账号的权限。
  5. 一到两个小时后,检查批量提取功能是否会提取您的 Feed 文件。

如果您使用 HTTPS 托管数据 Feed

  1. Actions Center(操作中心),前往 Configuration(配置)> 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 时

  • 在当前端到端订购广告资源中不存在且没有任何新实体 错误。
  • 清单中已不存在任何错误的实体 并且dateModified比其 或者在没有 dateModified 的情况下使用 Feed 提取开始时间晚于当前条目的时间 更新,否则将被标记为过时。
  • 属于先前的 Feed 但已不再包含在其中的实体 如果没有文件,正在处理的批量 Feed 将被删除 Feed 中的错误级别。

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