---
title: "APIクローラーの設定"
slug: "configure-an-api-crawler"
abstract: "Sitecore SearchでAPIクローラーの設定方法。"
---
# APIクローラーの設定

Sitecore Search APIクローラーは、JSONコンテンツの処理に特化した強力なクローラーです。認証が必要なソースコンテンツへのアクセス、[複数言語でのインデックスドキュメント作成](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/configure-indexing/configure-a-localized-advanced-web-crawler.html "Configure a localized advanced web crawler")、属性値の抽出にJavaScriptを使うなど、複雑なユースケースをサポートしています。

APIクローラーは、URLやAPIエンドポイントにアクセスし、各URLやエンドポイントのコンテンツをインデックス化することで動作します。

> !重要[インデックス方法を選ぶ](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/configure-indexing/identify-the-required-source-type.html "Identify the required source type")際は[クローラータイプの詳細な仕様](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/configure-indexing/crawler-specifications.html "Crawler specifications")を参照してください。
> 
> これらの [インデックスのベストプラクティス](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/configure-indexing/best-practices-for-indexing.html "Best practices for indexing") に従って、[ウェブサイト全体を成功裏にクロールしたり](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/configure-indexing/best-practices-to-crawl-complete-websites.html "Best practices to crawl complete websites") 、[頻繁に新しい更新をクロール](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/configure-indexing/best-practices-to-crawl-frequent-new-updates.html "Best practices to crawl frequent new updates")したりしましょう。
> 
> ほとんどの場合、まずウェブクローラーソースを作成することをお勧めします。その後、より多くの機能が必要だと感じたら、[ウェブクローラーソースを高度なウェブクローラーソースに変換](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/configure-indexing/convert-a-web-crawler-to-an-advanced-web-crawler.html "Convert a web crawler to an advanced web crawler")してください。

このウォークスルーでは、以下の方法を説明します:

:::攻略

1.  [APIクローラーソースを作成](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/configure-indexing/configure-an-api-crawler.html#create-an-api-crawler-source)
2.  [クローラー設定の設定](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/configure-indexing/configure-an-api-crawler.html#configure-crawler-settings)
3.  [トリガーの設定](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/configure-indexing/configure-an-api-crawler.html#configure-a-trigger)
4.  [リクエストエクストラクタの設定](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/configure-indexing/configure-an-api-crawler.html#configure-a-request-extractor)
5.  [ドキュメントエクストラクタの設定](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/configure-indexing/configure-an-api-crawler.html#configure-a-document-extractor)
6.  [スケジュールのスキャン](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/configure-indexing/configure-an-api-crawler.html#schedule-scans)
7.  [ソースへの更新を公開してください](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/configure-indexing/configure-an-api-crawler.html#publish-updates-to-the-source):::

> !注元のコンテンツがクローラーアクセスする前に認証が必要な場合は、[クローラー認証設定](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/configure-indexing/crawler-authentication.html "Crawler authentication")を設定してください。例えば、元のコンテンツにはGUIベースのユーザー名やパスワード、リクエストヘッダー内のアクセストークンやキーが必要かもしれません。これはソース作成後いつでも可能です。

## APIクローラーソースを作成

ソースを作成するには:

1.  メニューバーで「 **Sources**」をクリックしてください。
2.  Click ![Plus\_add\_\_grey.png](https://doc.sitecore.com/api/markdown-image/search/ja/users/search-user-guide/images/Plus_add__grey.png) **情報源を追加**してください。
3.  **SOURCE NAME**フィールドにソースの名前を入力します。
4.  **DESCRIPTION**欄で、設定したいソースを数行入力してください。
5.  **CONNECTOR**ドロップダウンリストで**APIクローラー**をクリックします。
6.  Click **Save**。エラーがなければ、Searchは新しいソースを作成します。

## クローラー設定の設定

[クローラーの設定](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/additional-configurations-and-settings/configure-crawler-settings.html "Configure crawler settings")を設定し、APIクローラーのスコープを定義する重要な高レベル構成を定義します。

APIクローラーの設定を設定するには:

1.  Click **Sources**をクリックしてから作成したソースをクリックしてください。
    
2.  **ソースSettings**ページで、**クローラー Settings**の横API「**編集**![pencil\_purple.png](https://doc.sitecore.com/api/markdown-image/search/ja/users/search-user-guide/images/pencil_purple.png)」をクリックします。
    
3.  クローラーがクロールするURLの深さと数を設定するには:
    
    -   **最大深度**フィールドで、クローラーがURL間進んでほしい最大レベル数を入力します。
        
        例えば、*5*を入力します。
        
    -   **MAX URLs**フィールドには、クローラーがクロールできる最大URL数を入力します。クローラーが抜け落ちないURLを確実にするために大きな数を入力してください。
        
        例えば、*5000*を入力するとします。
        
4.  並列にクロールするワーカー数の設定と、リクエスト間のオプションの遅延設定:
    
    -   **PARALLELISM (WORKERS)** ドロップダウンメニューの値をクリックして、同時にクロールしコンテンツをインデックスするスレッド(ワーカー)の数を定義できます。
        
        例えば、*2を入力して*2のワーカーだけを並列にクロールできるようにします。これはデフォルトの*5*ワーカーよりも少ないメモリを使用します。
        
    -   オプションで、ワーカーを1つだけ設定している場合は、クローラーが次のインデックス対象URLにアクセスするまでの待機時間を定義できます。これを行うには、**DELAY(MS)** フィールドで時間をミリ秒単位で入力します。
        
        例えば、*3*を入力します。
        
5.  **TIMEOUT**フィールドには、クローラーが応答を待つ時間(ミリ秒単位)を入力してください。デフォルトは10,000msです。
    
    例えば、5000を入力してください。これにより、クローラーはクロールするすべてのURLから応答を得るために5000ミリ秒、つまり5秒間待つことになります。
    
6.  オプションでヘッダーを追加するには「 **Add Header**」をクリックしてください。次に、**Key**フィールドにコンテンツが期待するユーザーエージェントの名前を入力します。 **Value**フィールドに、コンテンツが期待するユーザーエージェントの値を入力してください。このセキュリティ対策により、Searchクローラーのみがデータをクロールでき、他のクローラーは行えません。
    
    例えば、**キー**に*user-agent*、*値にsitecorebot*を**入力します。**
    
7.  オプションで、クローラーがナビゲーションクッキーを受け入れないようにしたい場合は、「**追加Settings**」セクションで「**クロール中にナビゲーションクッキーを有効にする**」をオフにしてください。
    
    ナビゲーションクッキーはクローラーの経路を追跡し、訪問したURLを記録します。時にはクッキーがクローラーを誤誘導して、以前に訪問したURLを再インデックスさせることがあります。しかし、クッキーは特に認証が必要なウェブサイトにとって重要です。
    
8.  Click **Save**。
    

## トリガーの設定

高度なウェブクローラーがインデックス化するコンテンツを探すための出発点となる [ように](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/additional-configurations-and-settings/configure-triggers.html "Configure triggers") トリガーを設定しましょう。以下のようなトリガーを使用できます:

-   [Requestトリガー](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/additional-configurations-and-settings/configure-triggers/create-a-request-trigger.html "Create a request trigger")
-   [JavaScriptトリガー](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/additional-configurations-and-settings/configure-triggers/create-a-javascript-trigger-to-get-a-set-of-urls.html "Create a JavaScript trigger to get a set of URLs")

GraphQL APIエンドポイントでリクエストトリガーを設定するには:

1.  **ソースSettings**ページの**トリガー**の横に「**編集**![pencil\_purple.png](https://doc.sitecore.com/api/markdown-image/search/ja/users/search-user-guide/images/pencil_purple.png)」をクリックします。
    
2.  Click ![plus\_add\_\_purple.png](https://doc.sitecore.com/api/markdown-image/search/ja/users/search-user-guide/images/plus_add__purple.png) **トリガーを追加**してください。
    
3.  **トリガータイプの**ドロップダウンリストで「**Request**」をクリックします。
    
4.  任意で、**Body**欄にリクエストの本文を入力します。
    
    > !注POSTやPatchリクエストを使う場合は、リクエストの本体に入力しなければなりません。
    
    例えば、以下を使います:
    
    {"query":"query getItem($path: String) {\\n item(language: \\"en\\", path: $path) {id path children {results {name}\\n }\\n }\\n}\\n","variables":{"path":"/sitecore/content/mvpsite"}}
    
5.  オプションでヘッダーを設定するには、「 **ヘッダーを追加**」をクリックします。次に、**キー** フィールドにコンテンツが期待するユーザーエージェントの名前を入力します。 **Value**フィールドには、コンテンツが期待するユーザーエージェントの値を入力してください。
    
    例えば、**キー**に*user-agent*、*値にsitecorebot*を**入力します。**
    
    > !注このセキュリティ対策により、Searchクローラーのみがデータをクロールでき、他のクローラーは利用できません。
    
6.  オプションで、**メソッド** のドロップダウンメニューで使いたいHTTPメソッドをクリックします。デフォルトである**GET**が選択されます。
    
    例えば、**POST**をクリックします。
    
7.  **URL**フィールドに、トリガーとして使いたいAPIエンドポイントを入力します。
    
    例えば、ペースト *[https://edge.sitecorecloud.io/api/graphql/v1](https://edge.sitecorecloud.io/api/graphql/v1)*
    

> !注トリガー応答はSitecore Searchには見えません。しかし、後でトリガーの応答を利用するリクエストエクストラクタを設定する際に覚えておくと便利です。

この例では、トリガーは以下のJSON応答を返します:

{
 "data": {
 "item": {
 "id": "xxx",
 "path": "/sitecore/content/MvpSite",
 "children": {
 "results": 
 {
 "name": "Home"
 },
 {
 "name": "MVP Repository"
 },
 {
 "name": "Shared Content"
 },
 {
 "name": "Settings"
 }
 
 }
 }
 }

## リクエストエクストラクタの設定

[リクエストエクストラ](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/additional-configurations-and-settings/request-extractors.html "Request extractors")クタはクローラーがクロールするための追加URLを作成します。

APIクローラーの設定では、Requestエクストラクタが非常に重要です。APIクローラーの場合、トリガーはURLではなくJSONを返します。これに対応するには、リクエストエクストラクタを設定し、トリガーの出力を使い、APIクローラーがクロールできるURLやAPIエンドポイントを返すように設定します。

この例では、トリガーが出力するJSONオブジェクトを使い、APIエンドポイントを生成するリクエストエクストラクタを設定する必要があります。

JSONオブジェクトを入力として使い、APIエンドポイントのリストを返すリクエストエクストラクタを作成するには:

1.  Click **Sources**を選んで作成したソースを選択してください。
    
2.  **ソースSettings**ページの**Requestエクストラクター**の横に、「**編集**![pencil\_grey.png](https://doc.sitecore.com/api/markdown-image/search/ja/users/search-user-guide/images/pencil_grey.png)」をクリックします。
    
3.  [リクエストエクストラクタ](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/additional-configurations-and-settings/request-extractors.html "Request extractors")を作成するには、**ドキュメントエクストラクタ**のページで:
    
    -   **名前**欄に抽出器の意味のある名前を入力します。
        
        例えば、*Sitecoreの動画URLを入力してください。*
        
    -   オプションとして、**URLs To Match**フィールドで使いたい**TYPE**式を選択し、その**VALUE**を入力してください。
        
        例えば、すべてのURLをこの形式でクロールするには、/ *homeloans/* **Glob Expression**を選択し、**VALUE**を \*\*/homeloans/\*\*.\* .と入力してください。
        
4.  **JS Source**フィールドにURLのリストを返すJavaScript関数を貼り付けます。
    
    > !注関数は[Cheerio](https://cheerio.js.org/)構文を使用し、オブジェクトの配列を返さなければなりません。
    
    例えば、ペーストを貼り付けます:
    
    function extract(request, response) {
     requests = ;
     if (response.body && response.body.data && response.body.data.item && response.body.data.item.children) {
     requests = response.body.data.item.children.results.map((e, i) => {
     name = e.name;
     path = JSON.parse(request.body).variables.path + "/" + name;
     return {
     url: request.url,
     method: 'POST',
     headers: {
     'content-type': 'application/json'
     },
     body: JSON.stringify({
     "query": "query getItem($path: String) {item(language: \\"en\\", path: $path) {id path rendered children {results {name}}}}",
     "operationName": "getItem",
     "variables": {
     "path": path
     }
     })
     };
     });
     }
    
     return requests;
    }
    
    この関数は以下のAPIエンドポイントを返します:
    
     {
     "url": "https://edge.sitecorecloud.io/api/graphql/v1",
     "method": "POST",
     "headers": {
     "content-type": 
     "application/json"
     
     },
     "body": "{"query":"query getItem($path: String) {item(language: \\\\"en\\\\", path: $path) {id path rendered children {results {name}}}}","operationName":"getItem","variables":{"path":"/sitecore/content/Sugcon/SugconEuSxa/Home"}}"
     },
     {
     "url": "https://edge.sitecorecloud.io/api/graphql/v1",
     "method": "POST",
     "headers": {
     "content-type": 
     "application/json"
     
     },
     "body": "{"query":"query getItem($path: String) {item(language: \\\\"en\\\\", path: $path) {id path rendered children {results {name}}}}","operationName":"getItem","variables":{"path":"/sitecore/content/Sugcon/SugconEuSxa/Media"}}"
     },
     {
     "url": "https://edge.sitecorecloud.io/api/graphql/v1",
     "method": "POST",
     "headers": {
     "content-type": 
     "application/json"
     
     },
     "body": "{"query":"query getItem($path: String) {item(language: \\\\"en\\\\", path: $path) {id path rendered children {results {name}}}}","operationName":"getItem","variables":{"path":"/sitecore/content/Sugcon/SugconEuSxa/Data"}}"
     },
     .....
    
5.  Click **Save**。
    

## ドキュメントエクストラクタの設定

[ドキュメントエクストラクタ](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/additional-configurations-and-settings/configuring-document-extractors.html "Configuring document extractors")を設定し、各content itemから属性値の抽出方法を指定します。ドキュメントエクストラクタはリクエストエクストラクタが生成したURLやAPIエンドポイントをクロールします。

以下の種類の文書抽出器を使用できます:

-   [JavaScript](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/additional-configurations-and-settings/configuring-document-extractors/create-a-javascript-document-extractor.html "Create a JavaScript document extractor")
-   [JSONPath](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/additional-configurations-and-settings/configuring-document-extractors/create-a-jsonpath-document-extractor.html "Create a JSONPath document extractor")

> !注APIクローラーの場合は、JavaScriptエクストラクタやJSONPathドキュメントエクストラを設定できます。
> 
> どのドキュメントエクストラクターを使うか決める際には、以下のポイントを念頭に置いてください。
> 
> -   トリガーやリクエストエクストラクタの出力がJSONであれば、JSONPathドキュメントエクストラクタやJavaScriptドキュメントエクストラクタを使用できます
>     
> -   トリガーやリクエストエクストラクタの出力がXMLの場合は、JavaScriptドキュメントエクストラクタを使用してください。
>     

JavaScript関数とURLをマッチングするJSONPath文書エクストラクタを作成するには:

1.  メニューバーで「 **Sources**」をクリックしてください。
    
2.  作成したソースを選択します。
    
3.  **ソースSettings**ページで**、ドキュメント抽出器**の横に「**編集**![pencil\_grey.png](https://doc.sitecore.com/api/markdown-image/search/ja/users/search-user-guide/images/pencil_grey.png)」をクリックします。
    
4.  [ドキュメントエクストラクター](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/additional-configurations-and-settings/configuring-document-extractors.html "Configuring document extractors")を作成するには、**ドキュメントエクストラクター**のページで:
    
    -   **名前**欄に抽出器の意味のある名前を入力します。
        
        例えば、*Sitecore cloud*を入力します。
        
    -   **エクストラクタータイプ**ドロップダウンメニューで**JSONPath**をクリックします。
        
    -   オプションとして、このエクストラクタのロジックが特定のパターン[に一致するURL](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/configure-indexing/configuring-document-extractors.html#UUID-f9b686c5-2e0d-dee3-93fc-9d567475afee_section-idm4597072673881633832915676016 "URLs to match")にのみ適用されるようにするために、**URLを「Match**」に設定してください。これを行うには、「**URLs To Match**」フィールドで「**Add Matcher**」をクリックし![Plus\_add\_\_grey.png](https://doc.sitecore.com/api/markdown-image/search/ja/users/search-user-guide/images/Plus_add__grey.png) 「Add Matcher」をクリックし、使いたい式の**タイプ**を選択し、その式の**値を**入力してください。
        
        例えば、**TYPE**ドロップダウンメニューで**JS**をクリックし、次の式を入力してJavaScriptを使えば、エクストラクタがリアクションのリアクションがbody.data.item.renderedの値を持つAPIエンドポイントからのみ属性を抽出するようにします。
        
        function match(request, response) {
         return response.body.data.item.rendered != null &&
         response.body.data.item.rendered.sitecore.route.placeholders'headless-main'.length > 0;
        }
        
5.  タグ**付け**セクションで「**タグ付け追加**」をクリックします。その後、タグエディター**のタグドロップダウン**[メニューでタグ](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/additional-configurations-and-settings/crawler-tags.html "Crawler tags")を選択します。例えば、*コンテンツ*を選択します。
    
    > !注ドキュメントエクストラクタでは、それぞれがユニークなタグにリンクされた複数のタグガーを作成できます。このようにして、各タグ付け者は以下の通りになります:
    > 
    > -   索引文書のセットを生成します。
    >     
    > -   複数のルールを持つことができ、それぞれのルールが1つの属性の抽出ロジックを定義します。
    >     
    > 
    > 例えば、5つのルールを持つタグ付け器は、それぞれ*5*つの属性を持つ*1*つの文書セットを生成します。
    > 
    > 3つのタグ付け器でそれぞれ1つのルールを持つと、それぞれ*1つの*属性を持つ*3*つの文書セットが得られます。
    
6.  タグエディターで、属性を抽出するために以下の詳細を入力してください:
    
    -   **Attribute**ドロップダウンメニューで、設定したい属性をクリックします。
        
        例えば、「 **説明」**をクリックします。
        
    -   **「Value」**タイプのドロップダウンメニューで、属性値を固定値にするか式にするかを選択します。
        
        例えば、「 **表現」**をクリックします。
        
    -   **EXPRESSION**フィールドにJSONPath式を入力し、属性値が得られます。
        
        例えば、..placeholders'headless-main'..fields.Descriptionキーの から*から description*の値を得るには、enterを
        
        ..placeholders'headless-main'..fields.Description.value
        
7.  オプションで、属性値を取得する複数の方法を設定するには、「**選択機能を追加**![Plus\_add\_\_grey.png](https://doc.sitecore.com/api/markdown-image/search/ja/users/search-user-guide/images/Plus_add__grey.png)」をクリックします。次に、2つ目のセレクターの**Expression**フィールドに、属性値を生成するJSONPath式を入力します。
    
    例えば、2つ目の選択肢として、..placeholders'headless-main'..fields.Textタグから*description*の値を取得したいです。これを取得するには、次のJSONPath式を入力します。
    
    ..placeholders'headless-main'..fields.Text.value
    
    > !注複数のセレクタがある場合、Searchはそれらを時系列順に実行し、結果を出す式に到達したところで停止します。
    
8.  他の属性の抽出方法を設定するには、「**ルール![Plus\_add\_\_grey.png](https://doc.sitecore.com/api/markdown-image/search/ja/users/search-user-guide/images/Plus_add__grey.png)を追加**」をクリックし、ステップ5と6を繰り返してください。
    
    例えば、*説明* 属性の抽出方法を設定したら、*タイトル*、*サブタイトル*、*画像* 属性の抽出方法を設定できます。
    
9.  タグエディターで「 **保存**」をクリックします。
    
10.  (任意)別のタグの属性を抽出するには、タグ**付け![Plus\_add\_\_grey.png](https://doc.sitecore.com/api/markdown-image/search/ja/users/search-user-guide/images/Plus_add__grey.png) 追加**ボタンをクリックし、**タグ**のドロップダウンメニューでタグをクリックしてステップ5から8までを繰り返してください。
     
11.  **ドキュメント抽出器**のページで、**保存**をクリックします。
     

## スケジュールのスキャン

クローラースケジュールを作成するには:

1.  メニューバーで「 **Sources**」をクリックしてください。
    
2.  クロールをスケジュールしたいソースをClickしてください。
    
3.  **ソースSettings**ページで、**クローラースケジューラー**の横![pencil\_grey.png](https://doc.sitecore.com/api/markdown-image/search/ja/users/search-user-guide/images/pencil_grey.png)**編集**をクリックしてください。
    
4.  Searchでスケジュールクロールを開始したいタイミングを設定するには、**STARTS**ドロップダウンメニューの値をクリックしてください。スケジュールをできるだけ早く開始したい場合は **、「いつでも**」を選択してください。特定の日付からクロールを開始したい場合は、「 **Specific Date**」をクリックし、日付選択機能で日付をクリックしてください。
    
5.  定期的なスケジュールでクロールを実行させるには、**REPEAT**ドロップダウンメニューで **「はい**」をクリックします。
    
    > !ヒント将来の日に一度だけクロールをスケジュールするには、**REPEAT**ドロップダウンメニューで「 **DOES NOT REPEAT」**をクリックしてください。この設定では、ステップ4で選択した日にクロールが発生し、繰り返しません。
    
6.  クロールの頻度を定義するには、「 **Repeats every** field」の横にある値をクリックしてください。 **1**から**99**までの任意の値を間隔として、**日**数、**週**、または( *生産* ドメインのみ) **時間** 単位をクリックできます。例えば、4週間ごとにクロールを実行したい場合は、**4**と **週**をクリックしてください。
    
7.  クロール開始時間を定義するには、**RUN TIME**ドロップダウンメニューの値をクリックしてください。例えば、クロールを深夜0時に開始したい場合は**12:00 AM**をクリックしてください。表示される時間は自動的にあなたのタイムゾーンに合わせて調整されます。
    
8.  クローラースケジュールの終了時間を設定するには、**END DATE**ドロップダウンメニューの値をクリックしてください。スケジュールを無期限に継続したい場合は「 **Never**」を選択してください。特定の日付でクロールを終了させたい場合は、「 **Specific Date**」をクリックし、日付ピッカーで日付をクリックしてください。
    
9.  Click **Save**。
    

## ソースへの更新を公開する

最初のスキャンとインデックスを始めるには、必ずソースを公開してください。

情報源を公開するには:

1.  メニューバーで「 **Sources**」をクリックしてください。
2.  公開したいソースをClickで「 **公開**」をクリックします。
3.  **ソース公開**ダイアログで、このソースの[再クロール](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/keep-indexes-up-to-date.html "Keep indexes up to date")をSearchしたい場合は、「**公開後にソース再クロールをトリガー**」チェックボックスを選択してください。
4.  Click **Publish**。