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> ...>
검색 인덱스 만들기
검색 인덱스는 한 번에 하나씩 생성하거나 단일 작업으로 여러 개를 병렬로 생성할 수 있습니다.
단일 인덱스를 생성하려면 search_indexes#create_one
을 사용하고, 첫 번째 인수로 인덱스 정의를 전달하고, 두 번째 인수로 인덱스의 이름(선택 사항)을 전달합니다.
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_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 인덱스를 나열 할 수 있습니다.
검색 인덱스 삭제
Atlas 검색 인덱스를 삭제하려면 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 또는 이름을 가져오려면 Atlas Search 인덱스를 나열 할 수 있습니다.
검색 인덱스 나열
사용 가능한 검색 인덱스를 나열하려면 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