Atlas Search インデックス
MongoDB Atlas でホストされているデータベースを使用している場合、ドライバーは search_indexes
属性を使用してコレクションの Atlas Search インデックスを作成、削除、表示する機能を提供します。
client = Mongo::Client.new(your_atlas_uri, database: 'music') client[:bands].search_indexes # => #<Mongo::SearchIndex::View:0x000055e2822b9318 @collection=#<Mongo::Collection:0x660 namespace=music.bands> ...>
検索インデックスを作成します
検索インデックスは、一度に 1 つずつ作成することも、1 回の操作で複数の検索インデックスを並行して作成することもできます。
単一インデックスを作成するには、 search_indexes#create_one
を使用して、最初の引数としてインデックス定義を渡し、2 番目の引数としてインデックスの任意の名前を渡します。
client[:bands].search_indexes.create_one({ dynamic: true }) client[:bands].search_indexes.create_one( { dynamic: false, fields: { name: { type: 'string', analyzer: 'lucene.simple' } } }, 'band-name-index' )
複数のインデックスを作成するには、インデックス仕様の配列を受け入れるsearch_indexes#create_many
を使用します。 create_one
と違い、各インデックス仕様は少なくともdefinition
キーを含むハッシュであり、インデックスを定義します。 各 には、インデックスに名前を付けるためのname
キーも指定できます。
client[:bands].search_indexes.create_many([ { definition: { dynamic: true } }, { name: 'band-name-index, definition: { dynamic: false, fields: { name: { type: 'string', analyzer: 'lucene.simple' } } } }, ])
create_one
を呼び出すかcreate_many
を呼び出すかにかかわらず、インデックスが作成される前に、メソッドはすぐに返されることに注意してください。 その後、インデックスはバックグラウンドで非同期に作成されます。
検索インデックスを更新
Atlas Search インデックスはプログラムで更新できます。 たとえば、使用されるアナライザを変更したり、動的アナライザではなく明示的なフィールド マッピングを提供したりするには、この操作を行います。 これを行うには、 search_indexes#update_one
メソッドを使用します。
client[:bands].search_indexes.update_one(new_definition, id: index_id) client[:bands].search_indexes.update_one(new_definition, name: index_name)
インデックスは ID または名前のいずれかで識別されますが、どちらか一方を指定する必要があります。 新しいインデックス定義は完全な定義である必要があり、既存の定義よりも優先されます。
更新するインデックスの ID または名前を取得するには、 検索インデックスを一覧表示 します。
検索インデックスの削除
Atlas Search インデックスを削除するには、 search_indexes#drop_one
を呼び出して、削除するインデックスのid
またはname
のいずれかを指定します。
client[:bands].search_indexes.drop_one(id: index_id) client[:bands].search_indexes.drop_one(name: index_name)
どちらの場合も、メソッドはすぐに返され、インデックスはバックグラウンドで非同期に削除されます。
削除するインデックスの ID または名前を取得するには、 検索インデックスを一覧表示 します。
検索インデックスをリストする
使用可能な検索インデックスを一覧表示するには、 search_indexes
オブジェクトを反復処理します。
client[:bands].search_indexes.each do |index_spec| p index_spec['id'] p index_spec['name'] p index_spec['status'] p index_spec['queryable'] p index_spec['latestDefinition'] end