---
title: "インデックス操作におけるIndexCustodianクラスの使用"
slug: "using-the-indexcustodian-class-for-index-operations"
abstract: "このトピックでは、ISearchIndexインターフェースの代わりにIndexCustodianクラスをインデックス操作に使う方法について説明します。"
---
# インデックス操作におけるIndexCustodianクラスの使用

インデックス操作にはISearchIndexインターフェースの代わりにIndexCustodianクラスを使用することを強くお勧めします。ISearchIndexインターフェースには以下のAPI呼び出しが含まれています:

-   再建
-   アップデート
-   DELETE
-   リフレッシュ

これらのメソッドをISearchIndexインターフェース上で直接呼び出すと、ログエントリの欠如からStackOverflowException例外によるアプリケーションクラッシュまで様々な問題を引き起こす可能性があります。したがって、IndexCustodianクラスからのこれらのAPI呼び出しを活用してください。 IndexCustodianクラスを使用する場合、ISearchIndexインターフェースとは以下の点が異なります。

-   IndexCustodianクラスはジョブの文脈でインデックス操作を実行します。これにより操作が原子的であることが保証され、同じ検索インデックスに対して他の再構築や更新操作が同時に実行されることはありません。
-   IndexCustodianクラスはindexing:startとindexing:endイベントをトリガーします。Sitecoreはイベントに依存してインスタンスの同期を維持し、またイベントを使ってローカルな変更を処理します。

例えば、特定のドキュメントが検索インデックスから削除する場合や、イベント無効化の文脈でアイテムを削除するカスタマイズを実装する場合、Content Search APIを実行します。

IndexCustodian.DeleteItem(ContentSearchManager.GetIndex("sitecore\_web\_index"), new SitecoreItemId(id);

または

IndexCustodian.DeleteItem(ContentSearchManager.GetIndex("sitecore\_web\_index"), new SitecoreItemUniqueId(itemUri));

古い文書はインデックス再 [構築操作](https://doc.sitecore.com/xp/ja/developers/101/platform-administration-and-architecture/rebuild-search-indexes.html "Rebuild search indexes")を用いて検索インデックスから削除することもできます。

「再インデックス木」操作はリフレッシュ操作とも呼ばれ、Sitecoreデータベースにまだ存在する項目に基づいて検索インデックスを更新します。この操作は検索インデックスから古い文書を削除しません。