借助 Connector SDK 和 Google Cloud Search API,您可以创建 Cloud Search 索引队列,以用来执行以下任务:
维护每个文档的多方面状况(状态、哈希值等),以便用于确保索引与存储区保持同步。
维护在遍历过程中发现的一系列项以将其编入索引。
根据项的状态确定该项在队列中的优先级。
维护其他状态信息(如检查点、更改标记等),以确保高效集成。
队列是分配给编入索引的项的标签,例如默认队列的“default”或队列 B 的“B”。
文档在队列中的优先级取决于其 代码。下面按优先级顺序(即从第一个处理到最后一个处理的顺序)列出了可用的 代码:
- 将项编入索引期间发生了异步错误,并且需要重新编入索引。
- 已编入索引的项自上次编入索引后在存储区中发生了修改。
- 未编入索引的项。
- 已编入索引的文档自上次编入索引后在存储区中未发生更改。
如果队列中的两个项具有相同状态,则在队列中停留时间最长的项将被赋予更高优先级。
- 推送时,连接器会明确包含推送 或 。
- 如果连接器不包含 ,则 Cloud Search 会自动使用 来确定项的状态。
- 如果商品未知,则商品状态会设为 。
- 如果相应项存在且哈希值匹配,则状态保持为 。
- 如果相应内容存在且哈希值不同,则状态变为 。
如需详细了解如何确定商品状态,请参阅 Cloud Search 使用入门教程中的遍历 GitHub 代码库示例代码。
通常,推送与连接器中的内容遍历和/或更改检测进程相关联。
内容连接器使用 轮询队列,以确定要编入索引的项。Cloud Search 会告知连接器哪些项最需要编入索引,并按状态代码和队列中等待时间对项进行排序。
连接器会从代码库中检索这些项,并构建索引 API 请求。
连接器使用 将项编入索引。只有在 Cloud Search 成功处理完内容后,内容才会进入 状态。
如果某个项已不再存在于代码库中,连接器还可以将其删除;如果该项未经修改或存在源代码库错误,则可以再次推送该项。如需了解如何删除商品,请参阅下一部分。
内容连接器使用 轮询队列 A,以确定要编入索引的项。Cloud Search 会告知连接器哪些项最需要编入索引,并按状态代码和队列中等待时间对这些项进行排序。
连接器会从代码库中检索这些项,并构建索引 API 请求。
连接器使用 将项编入索引。只有在 Cloud Search 成功处理完内容后,内容才会进入 状态。
系统会对“队列 B”调用 方法。但是,没有任何内容已推送到队列 B,因此无法删除任何内容。
在第二次完整遍历时,内容连接器使用 将项(元数据和哈希)推送到队列 B:
- 推送时,连接器会明确包含推送 或 。
- 如果连接器不包含 ,则 Cloud Search 会自动使用 来确定项的状态。
- 如果项目未知,则项目状态会设为 ,并且队列标签会更改为“B”。
- 如果相应项存在且哈希值匹配,则状态保持为 ,队列标签会更改为“B”。
- 如果内容存在且哈希值不同,状态会变为 ,队列标签会更改为“B”。
内容连接器使用 轮询队列,以确定要编入索引的项。Cloud Search 会告知连接器哪些项最需要编入索引,并按状态代码和队列中等待时间对这些项进行排序。
连接器会从代码库中检索这些项,并构建索引 API 请求。
连接器使用 为项编入索引。只有在 Cloud Search 成功处理完内容后,内容才会进入 状态。
最后,对队列 A 调用 以删除之前编入索引的所有 CCloud Search 项,如果这些项仍带有队列“A”标签,则会被删除。
在后续的完整遍历中,用于编制索引的队列和用于删除的队列会互换。
借助 Content Connector SDK,您可以将项推送到队列中,以及从队列中拉取项。
如需打包某个项并将其推送到队列中,请使用 构建器类。
要从队列中拉取项以进行处理,您无需执行任何特定操作。而是会使用 Repository 类的 方法按优先级顺序从队列中拉取项。
通过 REST API,您可以分别使用以下两个方法将项推送到队列中以及从队列中拉取项:
- 如需将项推送到队列中,请使用 。
- 如需轮询队列中的项,请使用 。
您还可以使用 在索引编制期间将项推送到队列中。在编入索引期间推送到队列的项不需要 ,并且会自动分配 状态。
方法用于将 ID 添加到队列中。此方法可使用特定 值调用,该值决定了推送操作的结果。如需查看 值的列表,请参阅 Items.push 方法中的 字段。
推送新 ID 会添加一个包含 代码的新条目。
可选载荷始终会作为不透明值进行存储,并通过 返回。
轮询某个项时,系统会预留该项,这意味着您无法通过再次调用 返回该项。将 与 作为 、 或 搭配使用时,会取消预留轮询条目。如需进一步了解预留条目和未预留条目,请参阅 Items.poll 部分。
采用哈希值的
Google Cloud Search API 支持在 请求中指定元数据和内容哈希值。您可以在推送请求中指定元数据和/或内容哈希值,而不指定 。Cloud Search 索引队列会将提供的哈希值与数据源中该项对应的存储值进行比较。如果两个值不匹配,则该条目将被标记为 。如果索引中不存在相应项,则状态将为 。
Items.poll 方法用于从队列中检索具有最高优先级的条目。请求的状态值和返回的状态值分别指示所请求优先级队列的状态和所返回 ID 的状态。