Azure Searchで「Index ‘xxxxxxxx’ does not exist」エラーが出るときの原因と対処法

※当サイトではアフィリエイト広告を利用しています

Azure Cognitive Search(旧称:Azure Search)を使っていると、以下のようなエラーに遭遇することがあります。

Error initializing IndexProjections: Index 'xxxxxxxx' does not exist

このエラーは、検索クエリやIndex Projectionを初期化しようとした際に、指定されたインデックスが存在しないことを意味しています。


Index ‘xxxxxxxx’ does not exist

このエラーが出る主な原因

  • 指定したインデックス名が間違っている(スペルミスや大文字・小文字の違い)
  • 該当のインデックスがまだ作成されていない
  • 別のリソースグループや別リージョンのSearch Serviceを参照している
  • インデックスが削除されているか、まだ作成中で反映されていない
  • インデックスが data sourceindexer とリンクされていない場合も一部で起きる

確認すべきポイント

Azure Portalから確認

  1. Azureポータルにログイン
  2. 使用している Search Service を開く
  3. 左側メニューの「インデックス」タブをクリック
  4. "testindex" が存在するかどうか確認

もしリストに存在しなければ、まだインデックスが作成されていないか、名前が異なることになります。


コード上での指定名を再確認

たとえば以下のようなコードで指定している場合:

var indexClient = new SearchIndexClient(endpoint, new AzureKeyCredential(apiKey));
var indexName = "testindex";
var searchClient = indexClient.GetSearchClient(indexName);

この indexName が実際の Azure 上のインデックス名と一致していることを必ず確認しましょう。


インデックスを作成する方法

もし "testindex" がまだ存在していない場合は、新しく作成する必要があります。

Azure SDK(C#の例):

var definition = new SearchIndex("testindex")
{
Fields = new FieldBuilder().Build(typeof(MyDocumentClass))
};

await indexClient.CreateIndexAsync(definition);

もしくは Azure CLI を使うことも可能です:

az search index create --name testindex --service-name my-search-service \
--resource-group my-resource-group --body @index.json

作成後すぐにエラーが出る場合

作成直後に同様のエラーが出ることもあります。これはインデックスがまだ反映されていないか、非同期処理が完了していないためです。少し待つか、リトライ処理を入れて対処します。


まとめ

問題の原因対処法
インデックスが存在しないAzure PortalやCLIで作成
名前のスペルミスや大文字小文字の違いコードとAzure上の実名を照合
作成後すぐの反映待ち少し待って再実行
別リージョン・別アカウントの参照適切なリソースを再確認

インデックスが存在しない場合に出るエラーは、最も基本的ながらよくハマるポイントの一つです。コード、Azureポータル、CLIのいずれかで確実に存在確認・再作成を行いましょう。

コメント