개요
이 가이드 에서는 MongoDB Search 인덱스를 생성하고 관리 방법을 학습 수 있습니다. 이러한 인덱스를 사용하면 MongoDB 검색 기능을 사용하여 Atlas 클러스터에 저장된 데이터에 대해 빠른 전체 텍스트 검색을 수행할 수 있습니다. MongoDB 검색 인덱스는 인덱스할 필드, 이러한 필드를 인덱싱하는 방법 및 기타 선택 사항 설정을 지정하여 MongoDB 검색의 동작을 구성합니다. MongoDB Search 인덱스에 대해 자세히 학습하려면 MongoDB Search 설명서를 참조하세요.
이 가이드 다음 조치를 수행하여 MongoDB Search 인덱스를 관리 방법을 설명합니다.
참고
이 가이드의 예시에서는 Atlas 샘플 데이터셋 중 하나인 sample_training 데이터베이스의 posts 컬렉션에 액세스합니다. Atlas 샘플 데이터를 가져오는 방법에 대한 지침은 Atlas 문서의 샘플 데이터 로드를 참조하세요.
검색 인덱스 모델 만들기
MongoDB Search 인덱스 만들려면 먼저 인덱스 사양을 설정하는 SearchIndexModel 인스턴스 빌드 해야 합니다. SearchIndexModel 인스턴스 빌드를 시작하려면 SearchIndexModel::builder() 메서드를 호출합니다.
참고
모델 인스턴스화
Rust 드라이버는 SearchIndexModel 를 비롯한 다양한 유형의 생성을 위해 빌더 디자인 패턴을 구현합니다. builder() 메서드를 사용하여 옵션 빌더 메서드를 연결하여 각 유형의 인스턴스를 구성할 수 있습니다.
Rust 드라이버는 다음과 같은 SearchIndexModel 빌더 메서드를 제공합니다:
definition()BSON 문서 매개변수를 허용하고 인덱스 정의를 설정합니다.name(): 문자열 매개변수를 허용하고 인덱스 이름을 설정합니다.
definition() 빌더 메서드에 전달하는 BSON 문서에는 mappings 필드가 포함되어야 합니다. collection에서 지원되는 모든 필드를 자동으로 인덱싱하려면 mappings.dynamic 중첩 필드를 true 로 설정하여 동적 매핑을 활성화합니다. 지정된 필드만 인덱싱하려면 mappings.dynamic 중첩 필드를 false 로 설정하고 인덱싱할 필드 목록을 포함하여 정적 매핑을 활성화합니다.
예시
다음 예에서는 SearchIndexModel 인스턴스에 이름이 example_index 인 인덱스에 대한 사양을 생성합니다. 이 코드는 body 및 date 필드만 인덱싱하도록 정적 매핑을 설정합니다.
let def = doc! { "mappings": doc! { "dynamic": false, "fields": { "body": {"type": "string"}, "date": {"type": "date"} } }}; let idx_model = SearchIndexModel::builder() .definition(def) .name("example_index".to_string()) .build();
검색 인덱스 만들기
Collection 인스턴스 에서 create_search_index() 메서드를 호출하여 컬렉션 에 MongoDB Search 인덱스 만들 수 있습니다. 이 메서드는 다음 매개변수를 허용합니다.
SearchIndexModel인스턴스에 지정된 인덱스 모델CreateSearchIndexOptions 인스턴스에 지정된 인덱스 옵션
예시
다음 예시 posts 컬렉션 에 MongoDB Search 인덱스 생성합니다. 이 코드는 인덱스 이름을 설정하고 동적 매핑을 활성화하는 SearchIndexModel 를 생성합니다. 그런 다음 코드는 SearchIndexModel 인스턴스 create_search_index() 메서드에 전달하여 MongoDB Search 인덱스 생성합니다.
let idx_model = SearchIndexModel::builder() .definition(doc! { "mappings": doc! {"dynamic": true} }) .name("example_index".to_string()) .build(); let result = my_coll.create_search_index(idx_model, None).await?; println!("Created MongoDB Search index:\n{}", result);
Created MongoDB Search index: "example_index"
다중 검색 인덱스 만들기
Collection 인스턴스 에서 create_search_indexes() 메서드를 호출하여 여러 MongoDB 검색 인덱스를 한 번에 만들 수 있습니다. 이 메서드는 다음 매개변수를 허용합니다.
인덱스 모델 목록으로,
SearchIndexModel인스턴스로 구성된 벡터로 지정됩니다.CreateSearchIndexOptions인스턴스에 지정된 인덱스 옵션
예시
다음 예시 에서는 posts 컬렉션 에 dynamic_index 및 static_index 라는 두 개의 MongoDB 검색 인덱스를 생성합니다. 이 코드는 각 인덱스 에 대해 인덱스 이름과 정의를 지정하는 SearchIndexModel 인스턴스를 만듭니다. 그런 다음 코드는 이러한 모델을 벡터로 create_search_indexes() 메서드에 전달하고 인덱스를 생성합니다.
let dyn_idx = SearchIndexModel::builder() .definition(doc! { "mappings": doc! {"dynamic": true} }) .name("dynamic_index".to_string()) .build(); let static_idx = SearchIndexModel::builder() .definition(doc! {"mappings": doc! { "dynamic": false, "fields": { "title": {"type": "string"}}}}) .name("static_index".to_string()) .build(); let models = vec![dyn_idx, static_idx]; let result = my_coll.create_search_indexes(models, None).await?; println!("Created MongoDB Search indexes:\n{:?}", result);
Created MongoDB Search indexes: ["dynamic_index", "static_index"]
검색 인덱스 나열
컬렉션 에서 list_search_indexes() 메서드를 호출하여 컬렉션의 기존 MongoDB Search 인덱스에 대한 정보 액세스 할 수 있습니다. 이 메서드는 다음 매개변수를 허용합니다.
다음에 대한 정보를 검색할 인덱스의 이름입니다.
AggregateOptions 인스턴스에 지정된 애그리게이션 옵션
ListSearchIndexOptions 인스턴스에 지정된 인덱스 옵션
예시
다음 예시 이 페이지의 여러 검색 인덱스 생성 섹션에서 생성된 MongoDB Search 인덱스에 대한 정보에 액세스합니다. 이 코드는 list_search_indexes() 메서드를 호출하고 각 매개 변수에 대해 None 값을 전달하여 드라이버 기본값 옵션을 사용하여 모든 MongoDB 검색 인덱스에 대한 정보를 반환하도록 지시합니다. 그런 다음 이 코드는 검색 인덱스를 출력합니다.
let mut cursor = my_coll.list_search_indexes(None, None, None).await?; while let Some(index) = cursor.try_next().await? { println!("{}\n", index); }
{ "id": "...", "name": "dynamic_index", "status": "READY", "queryable": true, "latestDefinitionVersion": {...}, "latestDefinition": { "mappings": { "dynamic": true } }, "statusDetail": [...] } { "id": "...", "name": "static_index", "status": "READY", "queryable": true, "latestDefinitionVersion": {...}, "latestDefinition": { "mappings": { "dynamic": false, "fields": { "title": { "type": "string" } } } }, "statusDetail": [...] }
팁
커서 반복에 대해 자세히 알아보려면 커서 를 사용하여 데이터 액세스 가이드를 참조하세요.
검색 인덱스 업데이트
Collection 인스턴스 에서 update_search_index() 메서드를 호출하여 MongoDB Search 인덱스 업데이트 할 수 있습니다. 이 메서드는 다음 매개변수를 허용합니다.
업데이트할 인덱스의 이름
수정된 인덱스 정의 문서
UpdateSearchIndexOptions 인스턴스에 지정된 인덱스 옵션
예시
다음 예시 이 페이지의 여러 검색 인덱스 만들기 섹션에서 생성된 static_index 이라는 이름의 MongoDB Search 인덱스 업데이트합니다. 이 코드는 정적 매핑 대신 동적 매핑을 사용하도록 인덱스 지시하는 새 인덱스 정의 문서 만듭니다. 그런 다음 update_search_index() 메서드를 호출하여 인덱스 를 업데이트 .
let name = "static_index"; let definition = doc! { "mappings": doc! {"dynamic": true} }; my_coll.update_search_index(name, definition, None).await?;
검색 인덱스 삭제
Collection 인스턴스 에서 delete_search_index() 메서드를 호출하여 MongoDB 검색 인덱스 를 삭제할 수 있습니다. 이 메서드는 다음 매개변수를 허용합니다.
삭제할 인덱스의 이름
인덱스 옵션, DropSearchIndexOptions 인스턴스에 지정됨
예시
다음 예시 이 페이지의 검색 인덱스 만들기 섹션에서 생성된 example_index 이라는 이름의 MongoDB Search 인덱스 삭제합니다. 이 코드는 인덱스 이름을 delete_search_index() 메서드에 전달하여 인덱스 삭제 .
let name = "example_index"; my_coll.drop_search_index(name, None).await?;
추가 정보
Rust 드라이버를 사용하여 생성할 수 있는 다른 인덱스에 대해 알아보려면 인덱스 가이드를 참조하세요.
MongoDB Search에 대해 자세히 학습 다음 Atlas 설명서를 참조하세요.
API 문서
이 가이드에서 사용되는 메서드 또는 유형에 대해 자세히 알아보려면 다음 API 문서를 참조하세요.