エンティティのバージョニング

フィードかリアルタイムの更新かにかかわらず、Google に送信される各エンティティにはバージョンが関連付けられます。このバージョンはタイムスタンプの形式で提供されています。フィードでは、dateModified 属性を使用してエンティティごとにタイムスタンプを指定できます。この属性がフィード エンティティに含まれていない場合、バージョンはフィードの取り込みの開始時間に設定されます。batchPushbatchDelete のリアルタイム更新では、それぞれ generation_timestamp フィールドと delete_time フィールドを使用してバージョンが設定されます。このフィールドが指定されていない場合、バージョンはリクエストを受信した時刻に設定されます。リレーショナル インベントリ スキーマの時間値の想定される形式をご覧ください。

Google は、最後に承認されたバージョン以降のバージョンのエンティティ(レストラン、メニュー、サービスなど)のみを処理します。それ以外の場合、エンティティは取り込まれず、「Stale Entity」エラーが記録されます。エンティティが新しいバージョンで更新されると、最終更新日時タイムスタンプは更新された現在の時刻に更新されます。

6 月 16 日 01 時 10 分(UTC)に、次の例を含むフィードが生成されたとします。

{
  "@type": "Restaurant",
  "@id": "restaurant12345",
  "dateModified": "2022-06-16T01:10:00.000Z",
  ...
}

フィードがまだ Google に取り込まれていない。その日の後半の 2022-06-16T01:22:00.000Z で、Google は次のエンティティを含むリアルタイム更新 batchPush リクエストを受け取ります。

{
  "records": [
    {
      "data_record": "{\"@type\": \"Restaurant\",\"@id\": \"restaurant12345\" ...",
      "generation_timestamp": "2022-06-16T01:20:00.000Z"
    }
  ]
}

レストランのエンティティ ID restaurant12345 のバージョンが 2022-06-16T01:20:00.000Z になり、エンティティの最終更新日時タイムスタンプが 2022-06-16T01:22:00.000Z に設定されます。要約すると、最終更新日時はエンティティが Google のインベントリで更新された時刻で、バージョンはリアルタイム更新リクエストの generation_timestamp 値またはフィードの dateModified 値です。

フィードの取り込みは、6 月 16 日 2 時(UTC)に開始されます。この場合、バージョン 2022-06-16T01:10:00.000Z のフィードで受信したエンティティは古くなっていると見なされ、取り込まれません。したがって、Google はリアルタイム アップデート リクエストからバージョン 2022-06-16T01:20:00.000Z のエンティティを引き続き提供します。

ベスト プラクティス:

  • 各エンティティのフィードにタイムスタンプを実装します。
  • リアルタイム更新の変更を次のフィードに適用し、フィード エンティティの dateModified タイムスタンプをフィードを作成した時点に設定します。