Atlas Search インデックスの作成と管理
Atlas Search インデックスは、簡単に検索可能な形式でデータを分類するデータ構造であり、タームとタームを含むドキュメントの間をマッピングします。Atlas Search インデックスを使用すると、特定の識別子を使用してドキュメントをすばやく検索できます。Atlas Search を使用して Atlas クラスター内のデータをクエリするには、Atlas Search インデックスを構成する必要があります。
Atlas Search インデックスは、単一または複数のフィールドで作成できます。データのソートやフィルタリングによく使用するフィールドはインデックスを作成して、クエリ時に関連データを含むドキュメントをすばやく取得できるようにすることをお勧めします。
インデックスを作成するフィールドは、以下の方法で指定できます。
動的マッピング。Atlas Search が各ドキュメント内でサポートされているタイプのすべてのフィールドのインデックスを自動的に作成できるようにします。 これにより、検索しないフィールドのインデックス作成にディスク領域が消費され、クラスターのパフォーマンスに悪影響が及ぶことがあります。
静的マッピング。インデックスを作成するフィールドを選択的に識別できるようにします。フィールドに多形データが含まれている場合、Atlas Search はインデックス定義でのマッピングに対応するドキュメントのみにインデックスを作成し、フィールドのインデックス定義で指定されたマッピングに対応しない値を含むドキュメントを無視します。
Considerations
に保存されるデータは、Atlas Search AtlasAtlas Searchクラスターにあるコレクションのデータとまったく同じコピーではありませんが、ディスク領域とメモリをある程度必要とします。store
stringの値を含むフィールドで {0 オプションを有効にするか、インデックスで 保存済みソース フィールド を構成する場合、Atlas Search はディスクの特定フィールドと同一のコピーを保存し、ディスク領域を使用する可能性があります。
Atlas Search インデックスを使用すると、Atlas クラスターのアイドルノードでリソース消費が上昇する可能性があります。これは、Atlas Search のためのさまざまな重要な操作を実行する基盤となる mongot プロセスによるものです。アイドルノードでの CPU 使用率は、インデックスの数、複雑さ、サイズによって異なる場合があります。
注意
Atlas Search は Atlas UI でのカスタマー キー管理を使用した暗号化キーによる Atlas Search インデックスの暗号化をサポートしていません。
MongoDB Atlas Search に組み込まれているアナライザは、句読点、大文字、ストップワードなどにおける差異を修正するインデックス可能なタームを作成し、クエリに解析と言語ルールを適用します。組み込まれている文字フィルター、トークナイザ、トークン フィルターを使用して、カスタムアナライザを作成することもできます。組み込みアナライザとカスタムアナライザの詳細については、「アナライザによるデータ処理」を参照してください。
Atlas Search の他のデータ型のサポートの詳細については、「データ型」を参照してください。mongot
プロセスは、インデックスが作成されたフィールドと _id
フィールドをクラスター上のコレクション向けインデックスごとにディスクに保存します。
Atlas Search インデックスを定義したコレクションに変更を加えた場合、クエリですぐに最新データを使用できない場合があります。ただし、mongot
が変更ストリームをモニターすることにより、保存済みデータのコピーがアップデート可能になるため、Atlas Search インデックスの一貫性は最終的には維持されます。
インデックス定義を変更すると、 mongot
はバックグラウンドで新しいインデックスを自動的に再ビルドすると同時に、古いインデックスでクエリを引き続き処理してダウンタイムが発生しないことを確認します。 これは、 mongot
とmongod
プロセスを同じノードに配置した場合、および プロセスを異なるノードに配置した場合に発生します。
検索配置のトポロジーを変更すると、Atlas Search は古いノードを削除する前に、新しいノードにインデックスをプロビジョニングして構築し、クエリのダウンタイムを発生させません。
mongod
プロセスとmongot
プロセスの両方が同じノードで実行される配置の場合、Atlas Search がインデックスの再構築を必要とする変更(インデックスの更新が必要な Atlas Search の機能など)を導入すると、Atlas は追加のノードを自動的に配置し、無料のインデックスを構築しますが、古いノードは引き続きクエリを処理します。
注意
専用検索ノードの場合
シャードを追加、調整すると、Atlas Search インデックスの再構築がトリガーされます。 インデックスの再構築中、データは最新でない場合があります。 そのため、追加、調整されたシャードのデータにクエリを実行すると、失敗したり不正確な結果が返されることがあります。
Atlas Search インデックスでコレクションを再シャーディングすると、再シャーディング操作の完了時にコレクションの |fts| インデックスを使用できなくなります。操作が完了してから、Atlas Search インデックスを削除して新しく作成し直す必要があります。
データベースのプライマリシャードを変更するためにコマンドを発行する場合、操作の完了時にこのデータベースにあるシャーディングされていないコレクションで Atlas Search インデックスを使用できなくなります。movePrimary
操作が完了したら、Atlas Search インデックスを削除して新しい Atlas Search インデックスを作成し直す必要があります。
ビデオで学びたい場合
Atlas Search インデックスの概要については、こちらのビデオをご覧ください。このビデオでは、アナライザと Atlas Search のオートコンプリート フィールド タイプについて詳細に説明しています。
所要時間: 8分
サポートされているクライアント
Atlas Search インデックスは、Atlas UI、Atlas Search API、Atlas CLI、 mongosh
、MongoDB Compass、 MongoDB ドライバーから作成、管理できます。
Atlas CLI
Atlas CLI を使用して Atlas Search インデックスを作成および管理するには、Atlas クラスターで MongoDB 6.0+ または 7.0+ を実行する必要があります。
mongosh
を使用して Atlas Searchmongosh
インデックスを作成および管理するには、Atlas クラスターでMongoDB6.0 + または7.0 + が実行されている必要があります。
MongoDB Compass
Compass を使用して Atlas Search インデックスを作成および管理するには、Atlas クラスターでMongoDB7.0 + を実行する必要があります。
MongoDB ドライバー
任意のクラスター層で Atlas Search インデックスをプログラムで作成および管理するには、次のMongoDBドライバー のいずれかを使用できます。
次のステップ
アトラス検索インデックスの作成方法については、「Atlas Search インデックスを作成する」を参照してください。サンプルデータセットの Atlas Search インデックスを作成し、インデックス化されたデータに対して Atlas Search クエリを実行するという実践的な経験については、次のページのチュートリアルを試してください。