数据存储实体具有以下字段:
- ID
- 创建
- 用户身份
- not_unique_id
- 姓名
- 描述
- 数字
我希望能够对名称和描述执行全文搜索。为此,我们需要从 Datastore 实体创建 Google Search Api 文档。
但是,数据存储区数据具有以下属性:
- 用户的数据在添加 12 小时后被删除。
- 根据用户需求,删除用户数据并添加新数据。
- not_unique_id 是第三方 id,应该用于在 Search Api 中组合相关实体,因为我们每次搜索只需要一个。
- 当用户提交新数据时,一次将是 +- 1000 个实体。
我遇到的最大问题是阻止 Google API 文档引用不再存在的 Datastore 实体。(不存在,因为 not_unique_id 不再出现在数据存储中)
我想看看一些概念、指南、想法和提示,以便我可以验证我是否走在正确的道路上。谢谢!!
正在进行的解决方案:
下面是使 Search API 与 Datastore 保持同步的例程。CreateUpdateDelete 根据用户请求执行。根据 App 请求执行读取。Cron 作业将使用 Delete 使 Search API 与 Datastore 保持同步。
数据存储实体
id = user_id
祖先 = not_unique_id
| ancestor | id | created | name | description | number |
| 19385020 | 1 | 1234567 | Foo | Qwerty | 63 |
| 19385020 | 2 | 1234567 | Foo | Qwerty2 | 12 |
| 19385020 | 3 | 1234567 | Foo | Qwerty | 74 |
搜索 API 文档
| not_unique_id | name | description |
| 19385020 | Foo | Qwerty |
创造
- 如果祖先+id 组合已经存在,请转到更新。
- 用户数据被插入到数据存储中。
- 搜索文档是根据祖先 (not_unique_id) 创建的。文档的名称和描述是实体组中最常见的名称。
读
- 全文搜索 API 查询名称/描述以获取 not_unique_id。
- 查询具有祖先 == not_unique_id 且编号 > 0 的实体的数据存储区。
- TODO 如果找到的一个或多个 not_unique_id 不再存在实体怎么办?我期待一定数量的分页结果。
更新
- 更新数据存储实体。
删除
- 将数据存储实体的编号设置为 0。
克朗
获取 number == 0 或创建时间 < 12 小时前的所有实体。如果最后一个后代实体即将被删除,则删除文档。删除实体。