Docs Menu
Docs Home
/ / /
Ruby MongoDB ドライバー
/

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

戻る

Indexes