批量注入

借助数据 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,请参阅 RestaurantServiceMenu 实体的文档,以及创建数据 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 控制台:设置存储分区权限

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 存储分区中的文件总数必须少于 10 万个。

文件数量上限:10 万个。

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

文件数量上限:10 万个。

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

连接数据 Feed 以进行批量注入

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

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

  1. 操作中心中,依次前往配置 > Feed
  2. 点击修改,然后填写更新 Feed 表单:

    • Feed delivery method(Feed 提交方式):设置为 Amazon S3
    • Marker File:提供 marker.txt 文件的网址。
    • 数据文件:提供包含数据 Feed 的 S3 存储分区的网址。
    • 访问权限 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 控制台的 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 文件(适用于 GCP 和 S3)的 last-modified 对象元数据字段或 sitemap.xml 文件的 last-modified 响应标头。Google 会使用这些值来确定数据 Feed 的新鲜度。

在系统提取批量 Feed 的过程中

  • 系统会插入当前订购端到端商品目录中不存在且没有任何错误的新实体。
  • 实体已存在于商品目录中且没有任何提取错误,并且 dateModified 比当前条目新;如果没有 dateModified,则 Feed 提取开始时间比当前条目更近,否则它们将被标记为过时。
  • 属于上一个 Feed 的实体不再包含在正在处理的批处理 Feed 中,将被删除,前提是该 Feed 中没有文件级错误。

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