Azure Cognitive Search(旧称:Azure Search)を使っていると、以下のようなエラーに遭遇することがあります。
Error initializing IndexProjections: Index 'xxxxxxxx' does not exist
このエラーは、検索クエリやIndex Projectionを初期化しようとした際に、指定されたインデックスが存在しないことを意味しています。
Index ‘xxxxxxxx’ does not exist
このエラーが出る主な原因
- 指定したインデックス名が間違っている(スペルミスや大文字・小文字の違い)
- 該当のインデックスがまだ作成されていない
- 別のリソースグループや別リージョンのSearch Serviceを参照している
- インデックスが削除されているか、まだ作成中で反映されていない
- インデックスが
data sourceやindexerとリンクされていない場合も一部で起きる
確認すべきポイント
Azure Portalから確認
- Azureポータルにログイン
- 使用している Search Service を開く
- 左側メニューの「インデックス」タブをクリック
"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のいずれかで確実に存在確認・再作成を行いましょう。


コメント