1. ページネーション

SearchAfter API (V2)

日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

SearchAfter API version 2.0を使用して、Sitecore Content Hub内の特定のエンティティを検索し、検索結果の複数ページを順番にフェッチします。このSearchAfter API 2.0は、フィルターを含むクエリをモデル化するために、POST本文内の複雑なオブジェクトをサポートします。SearchAfterRequestを受け入れ、EntityCollectionResourceを返します。

まず、ページの最後のアイテムに対応するlast_hit_data値を含む結果の最初のページに対する要求が行われます。この値は、すべての結果が取得されるまで、後続のページをフェッチするために使用されます。

大事な

すべての検索結果がメモリに保持されるわけではありません。ページ間で検索結果の一貫性を保つには、一意で簡単に並べ替えることができるクエリ パラメーター (識別子など) を少なくとも1つ追加します。変更日を使用すると、同じ検索結果セット内のページ間を移動するときに新しいエンティティが変更された場合、一貫性のない結果が返される可能性があります。

このエンドポイントは、次のURLから入手できます。

POST http://<HOSTNAME>/api/entities/searchafter/
メモ

X-ApiVersionヘッダーを2に設定する必要があります。

LINQを使用してSearchAfter APIでクエリを作成することはできません。ただし、このAPIを使用して結果をフィルタリングするのに役立つ例をいくつか紹介します。

結果をページ分割する

結果をページ分割するには、search_afterフィールドを使用して次の操作を行います。

  1. フィルターを作成して適用します。これにより、結果の最初のページが取得されます。最初のページのサイズは、フィルターのTakeパラメーターによって決まります。

  2. 結果のlast_hit_dataフィールドの値をメモします。例えば:

    "last_hit_data": [
            "1711962952348"
        ],
  3. ステップ1と同じフィルターを使用し、search_After値を含めます (例: "search_After": "1711962952348")。

    last_hit_dataはリクエストごとに変更されるため、後続の検索で更新する必要があります。

フィルター

次のフィルターがサポートされています。

サポートされている演算子

次の比較演算子は、プロパティのデータ型に応じてサポートされます。

手記

クエリでは、サポートされている任意の演算子 を使用できます。

データ型

演算子

long

==, !=

string

==, !=

int

=!=><>=<=

decimal

==!=><>=<=

bool

==, !=

DateTime

==!=<>>=<=

DateTimeOffset

==!=><>=<=

手記

文字列プロパティは、いくつかの追加フィルターをサポートしています。

  • Contains - この値には、指定した部分文字列が含まれている必要があります。

  • StartsWith -この値は、指定した部分文字列で始まる必要があります。

  • EndsWith - この値は、指定した部分文字列で終わる必要があります。

依頼

リクエストには、次のパラメータが含まれます。

  • Filter - 呼び出されるフィルターのタイプ。

  • LoadConfiguration - 適用する 負荷設定

  • NestedRelations - 適用するネストされたリレーション。

  • Renditions - 適用するレンディション。レンディション設定がない場合、すべてのレンディションが読み込まれます。レンディションの読み込みを停止するには、"renditions": "None"を使用します。一部のレンディションをロードするには、たとえば "renditions": "downloadOriginal","thumbnail"を使用します。

  • Search_after - 結果の次のページを取得するために使用される並べ替え値のリスト。ページングするには、Search_Afterフィールドに結果のlast_hit_dataフィールドの値を設定し、要求を繰り返します。

  • Sorting - 特定のシステムプロパティ(昇順または降順)に基づいて結果を並べ替えるために使用されます。複数の並べ替えパラメーターを使用して、より複雑な順序付けを行うことができます。

  • Take - 取得するエンティティの数。

次のSearch_after要求では、TitleプロパティでDoesNotEqual値 (A_text) M.Assetを検索します。結果は子孫の作成日で並べ替えられ、すべてのプロパティとリレーションは既定のカルチャになります。

{
    "filter": {
        "left": {
            "name": "M.Asset",
            "type": "DefinitionName"
        },
        "right": {
            "value": "A text",
            "operator": "DoesNotEqual",
            "property_name": "Title",
            "type": "StringProperty"
        },
        "operator": "And",
        "type": "Logical"
    },
    "take": 25,
    "sorting": [
        {
            "field": "createdon",
            "order": "Desc"
        }
    ],
    "load_configuration": {
        "load_entities": true,
        "culture_option": {
            "load_option": "None"
        },
        "property_option": {
            "load_option": "all"
        },
        "relation_option": {
            "load_option": "all"
        }
    }
}

応答

応答はEntityCollectionResourceオブジェクトを返し、次のパラメーターを含めることができます。

  • LastHitData - 結果の次のページを取得するためのソート値のリスト。

  • Items - 検索結果。

  • TotalItems - クエリ フィルターに一致するアイテムの合計数。

  • ReturnedItems - 返品されたアイテムの数。

次の応答は、応答の構造と内容を示しています。

{
    "last_hit_data": [
        "1710420783300"
    ],
    "items": [
        {
            "id": 33508,
            "identifier": "hk656xDaTCWF84KieDvIwg",
            "cultures": [
                "en-US"
            ],
            "properties": {
               ...
            },
            "relations": {
               ...
            },
            "created_by": {
                "href": "https://localhost:8180/api/entities/6",
                "title": "The user who created the entity"
            },
            "created_on": "2024-03-14T12:53:03.3008983Z",
            "modified_by": {
                "href": "https://localhost:8180/api/entities/6",
                "title": "The user who last modified the entity"
            },
            "modified_on": "2024-03-14T12:53:04.2791098Z",
            "entitydefinition": {
                "href": "https://localhost:8180/api/entitydefinitions/M.Asset",
                "title": "The entity definition for this entity"
            },
            "copy": {
                "href": "https://localhost:8180/api/entities/33508/copy",
                "title": "Copy this entity"
            },
            "permissions": {
                "href": "https://localhost:8180/api/entities/33508/permissions",
                "title": "The permissions on this entity"
            },
            "lifecycle": {
                "href": "https://localhost:8180/api/entities/33508/lifecycle",
                "title": "The lifecycle action for this entity."
            },
            "saved_selections": {
                "href": "https://localhost:8180/api/entities/33508/savedselections",
                "title": "The saved selections this entity belongs to"
            },
            "roles": {
                "href": "https://localhost:8180/api/entities/33508/roles",
                "title": "Roles for this entity"
            },
            "annotations": {
                "href": "https://localhost:8180/api/entities/33508/annotations",
                "title": "Annotations for this entity"
            },
            "is_root_taxonomy_item": false,
            "is_path_root": false,
            "inherits_security": true,
            "is_system_owned": false,
            "version": 2,
            "full": {
                "href": "https://localhost:8180/api/entities/33508"
            },
            "self": {
                ...
            },
            "renditions": {
                ...
            }
        }
    ],
    "total_items": 52,
    "returned_items": 1
}
この記事を改善するための提案がある場合は、 お知らせください!