データストア エンティティには次のフィールドがあります。
- ID
- 作成した
- ユーザーID
- not_unique_id
- 名前
- 説明
- 番号
名前と説明で全文検索を実行できるようにしたいと考えています。これを行うには、Datastore エンティティから Google Search Api ドキュメントを作成する必要があります。
ただし、データストア データには次の属性があります。
- ユーザーのデータは、追加されてから 12 時間後に削除されます。
- ユーザーの要求に応じて、ユーザーのデータが削除され、新しいデータが追加されます。
- not_unique_id は、検索ごとに 1 つだけ必要なため、Search Api で関連するエンティティを組み合わせるために使用する必要があるサードパーティ ID です。
- ユーザーが新しいデータを送信すると、一度に +- 1000 エンティティになります。
私が抱えている最大の問題は、もう存在しないデータストア エンティティを参照する Google API ドキュメントを作成できないようにすることです。(not_unique_id がデータストアに表示されなくなったため、存在しません)
自分が正しい道を進んでいることを確認できるように、いくつかの概念、ガイドライン、アイデア、およびヒントを確認したいと思います。ありがとう!!
進行中のソリューション:
以下は、Search API をデータストアと同期させるためのルーチンです。CreateUpdateDelete は、ユーザーの要求で実行されます。読み取りは App リクエストで実行されます。Cron ジョブは Delete を使用して、Search API をデータストアと同期させます。
データストア エンティティ
ID = ユーザー 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) に基づいて作成されます。ドキュメントの名前と説明は、エンティティ グループに表示される最も一般的な名前です。
読んだ
- not_unique_id を取得するための名前/説明に対する全文検索 API クエリ。
- 祖先 == not_unique_id および番号 > 0 を持つエンティティのデータストアをクエリします。
- TODO 見つかった 1 つまたは複数の not_unique_id に対してエンティティが存在しない場合はどうなりますか? ページネーションにはある程度の成果を期待しています。
アップデート
- データストア エンティティを更新します。
消去
- データストア エンティティの番号を 0 に設定します。
クロン
number == 0 または 12 時間以内に作成されたすべてのエンティティを取得します。最後の子孫エンティティが削除されようとしている場合は、ドキュメントを削除します。エンティティを削除します。