---
title: "インジェスションAPIを使ってインデックスにコンテンツを追加する"
slug: "using-the-ingestion-api-to-add-content-to-an-index"
abstract: "既存のプルやプッシュソースインデックスにインデックス文書を追加するために、Sitecore SearchのインジェスションAPIを使う方法。属性値やドキュメント抽出ロジックを渡すか、どちらかを渡すことができます。"
---
# インジェスションAPIを使ってインデックスにコンテンツを追加する

Sitecore Searchは「インジェスションAPI」というRESTful APIを公開し、インデックス文書の作成、更新、削除や既存のインジェスリクエストの状況を確認することができます。

> !注管理者が作成した [ソース](https://doc.sitecore.com/search/en/users/search-user-guide/index-items.html) のインデックスにドキュメントを追加できます。Ingestion APIを使ってソースを作成することはできません。

インジェスションAPIの主な目的は、コンテンツをプルソースインデックスまたはプッシュソースインデックスにプッシュすることです。

## プルソースインデックスへのコンテンツプッシュ

クロールはパフォーマンスに影響を及ぼすことがあります。なぜなら、クローラーはインデックス内の各アイテムを検査する必要があるからです。Ingestion APIを使って [、プルソースインデックスを頻繁に小規模に更新](https://doc.sitecore.com/search/en/users/search-user-guide/en/best-practices-to-crawl-frequent-new-updates.html) することをおすすめします。なぜなら、その方がリソース消費が少ないからです。インデックスドキュメントはいつでも追加、編集、削除が可能です。

[手動トリガーク](https://doc.sitecore.com/search/en/users/search-user-guide/en/manually-trigger-a-recrawl-or-reindex.html)[ロールとスケジュールクロール](https://doc.sitecore.com/search/en/users/search-user-guide/en/configure-a-crawler-schedule.html)の両方がインデックスとIngestion APIで行った変更を上書きします。変更を保持するために、次のクロール前にアイテムを更新することを忘れないでください。

> !重要クローラーのようなプルソースはデフォルトで初期化されたインデックスを持っていないため、インジェスションAPIを使って増分更新を行う前に、それらを使ってインデックス作業を実行する必要があります。

## プッシュソースインデックスへのコンテンツプッシュ

Ingestion APIを使って、プッシュソースインデックスにインデックスドキュメントを追加できます。プッシュソースでは、管理者が[APIプッシュソース](urn:resource:component:1068403)を作成して空のインデックスを生成します。その後、Ingestion APIを使ってインデックスドキュメントをこのインデックスに追加できます。

> !ヒントIngestion APIとwebhookを組み合わせてインデックス文書を追加・修正できます。Webhookは何かが起きたときにアプリから自動的に送信されるメッセージで、コンテンツの変更をIngestion APIに即座に通知し、検索インデックスがリアルタイムで更新されることを保証します。

## インジェスションAPIの使用

Sitecore SearchインジェスションAPI HTTPSのみをサポートしています。本体が必要なリクエストは、JSONとして送信しなければなりません。

インジェスションAPIの使い方を助けるために:

-   メニューバーの **Developer Resources** > **API Access** セクションでベースURLが見つかります。
-   View Open [APIやswaggerリファレン](https://doc.sitecore.com/search/en/developers/ingestion-api/index.html) スを閲覧すると、オブジェクトやキーの詳細なデータモデルや説明が見られます。

![Ingestion API endpoints and when you can use them.](https://doc.sitecore.com/api/markdown-image/search/ja/developers/search-developer-guide/images/Search_Ingestion_API.jpg)

Ingestion APIには以下のエンドポイントがあり、インデックスドキュメントの作成、更新、削除に利用できます。また、Ingestion APIへのリクエストのステータスを確認するためにも利用できます。

> !注以下のエンドポイントの例では、{BASE\_URL}のような括弧のテキストは、実装に適した正しい値に置き換える必要があるプレースホルダーを示します。

### インデックス文書の作成

以下のエンドポイントを使ってインデックスドキュメントを作成できます:

-   [属性値を渡してインデックス文書を作成する](https://doc.sitecore.com/search/ja/developers/search-developer-guide/using-the-ingestion-api-to-add-content-to-an-index/create-an-index-document/creating-a-document-by-passing-attribute-values.html "Creating a document by passing attribute values") - POST の呼び出し {base-URL}/ingestion/v1/domains/{domain ID}/sources/{sourceID}/entities/{entityID}/documents?locale={locale}
-   ドキュメントエクストラクターを使ってシステム上のファイルからインデックスドキュメントを作成します。POST{base-URL}/ingestion/v1/domains/{domainID}/sources/{sourceID}/entities/{entityID}/file/{documentID}?locale={locale}
-   ドキュメントエクストラクターを使ってURLからインデックス文書を作成します - POST{base-URL}/ingestion/v1/domains/{domainID}/sources/{sourceID}/entities/{entityID}/url/{documentID}?locale={locale}

> !重要HTTP 429応答を受け取った場合、着信リクエストの速度がプラットフォームの制限を超えている可能性があります。これはトラフィックの急増や累積ボリュームの増加によるものです。この場合、ドキュメントは取り込まれず保存されず、再度リクエストを送信しなければなりません。
> 
> このリスクを減らすために:
> 
> -   HTTP 429応答を検出するロジックを実装してください。
>     
> -   リトライを管理するには指数的なバックオフを使いましょう。
>     
> -   レスポンスにRetry-Afterヘッダーが含まれているか確認し、もし含まれていれば指定された時間後にリクエストを送信します。
>     
> 
> さらなるアドバイスはサポートにお問い合わせください。

### 索引文書の更新

インデックスドキュメントの更新には以下のエンドポイントを使用できます:

-   [属性値を渡してインデックス文書を完全に更新(更新)する](https://doc.sitecore.com/search/ja/developers/search-developer-guide/using-the-ingestion-api-to-add-content-to-an-index/updating-a-document.html "Updating a document") - PUT 呼び出し {base-URL}/ingestion/v1/domains/{domain ID}/sources/{sourceID}/entities/{entityID}/documents/{documentID}?locale={locale}
-   [インデックス文書を部分的に更新し、属性値を渡す](https://doc.sitecore.com/search/ja/developers/search-developer-guide/using-the-ingestion-api-to-add-content-to-an-index/partially-updating-a-document.html "Partially updating a document") - PATCH の呼び出し {base-URL}/ingestion/v1/domains/{domain ID}/sources/{sourceID}/entities/{entityID}/documents/{documentID}?locale={locale}

### インデックス文書の削除

以下のエンドポイントを使ってインデックスドキュメントを削除できます:

-   [インデックス文書を削除](https://doc.sitecore.com/search/ja/developers/search-developer-guide/using-the-ingestion-api-to-add-content-to-an-index/deleting-a-document.html "Deleting a document") - DELETE{base-URL}/ingestion/v1/domains/{domain ID}/sources/{sourceID}/entities/{entityID}/documents/{documentID}?locale={locale}

### 閲覧リクエストの状況

以下のエンドポイントを使ってインジェスションリクエストのステータスを確認できます:

-   [インデックス文書の追加、更新、削除リクエストのステータスを確認してください](https://doc.sitecore.com/search/ja/developers/search-developer-guide/using-the-ingestion-api-to-add-content-to-an-index/get-the-status-of-an-incremental-update.html "Get the status of an incremental update") - GET{base-URL}/ingestion/v1/domains/{domain}/sources/{source}/entities/{entity}/status/{incrementalUpdateId}

## 認証

実装にサブドメインがない場合は、インジェスションAPIにアクセスするためにingestionスコープを持つAPIキーで[認証](https://doc.sitecore.com/search/ja/developers/search-developer-guide/integrating-using-rest-apis/api-authentication-and-authorization.html "API authentication and authorization")する必要があります。APIキーはSearch **Developer Resources** > **API Access**セクションで取得できます。

> !注Ingestion APIへの呼び出しを認証するためにアクセストークンを使うことはできません。

## 必須パラメータ

インジェスションAPIにリクエストを送信する際には、必須パラメータは2種類あります:

-   データモデルによって義務付けられたパラメータ。すべてのエンドポイントは domain、 source 、 entity パラメータを必要とします。一部のエンドポイントは [他の必須パラメータ](https://doc.sitecore.com/search/en/developers/ingestion-api/index.html)を必要とします。
-   ドメインで必須とマークされている属性のパラメータです。例えば、ドメインが *プロダクト* 属性を必要としていて、 product:<value> やロジックを渡して *プロダクト*の値を抽出しなければ、インデックスドキュメントは作成されませんSearch。

成功する返答を得るために、必須のパラメータをすべて送ることを忘れないでください。