存在を確認する必要はありません。サーバーは、送信されたインデックス定義を自動的に比較し、既に存在するかどうかを確認します。同じ名前と定義を持つものが存在する場合は、そのままにしておきます。同じ名前のものが存在するが、定義が変更されている場合、古いものは削除され、新しいものが作成されます。
通常、アプリケーションの起動時に、同じアプリケーションでインデックスを作成します。global.asax にある可能性のある Web アプリの場合、およびコンソール/デスクトップ アプリの場合は、スタートアップ コードの最初の部分になります。
ただし、マルチテナント アプリケーションでよくあるように、多数の異なるデータベースがある場合など、それが不可能な場合もあります。このような場合、各テナント データベースを作成するときにインデックスを作成し、バージョン アップグレードをロールアウトするときに、更新または追加のインデックスの作成が必要になる場合があります。
また、いくつかの異なる方法でインデックスを作成できることにも言及する必要があります。
// scans the assembly for all indexes and creates them
IndexCreation.CreateIndexes(assembly, documentStore);
// scans a MEF catalog for all indexes and creates them
IndexCreation.CreateIndexes(catalog, documentStore);
// puts a single index the HARD way
documentStore.DatabaseCommands.PutIndex(...);
// puts a single index the easy way
documentStore.ExecuteIndex(new YourIndexCreationTask());
他にもいくつかありますが、あなたはアイデアを得るでしょう。
そして、徹底的に、インデックスの存在を本当に確認したい場合は、次を使用できます。
documentStore.DatabaseCommands.GetIndex("YourIndex") != null
しかし、それは定義ではなく名前でのみチェックします。そして、あなたはそれを必要としません。