Docs Menu
Docs Home
/ / /
Rust 드라이버
/ /

Atlas search 인덱스

이 페이지의 내용

  • 개요
  • 검색 인덱스 모델 만들기
  • 예시
  • 검색 인덱스 만들기
  • 예시
  • 다중 검색 인덱스 만들기
  • 예시
  • 검색 인덱스 나열
  • 예시
  • 검색 인덱스 업데이트
  • 예시
  • 검색 인덱스 삭제
  • 예시
  • 추가 정보
  • API 문서

이 가이드에서는 Atlas Search 인덱스 를 만들고 관리하는 방법을 배울 수 있습니다. 이러한 인덱스를 사용하면 MongoDB의 Atlas Search 기능을 사용하여 Atlas 클러스터에 저장된 데이터에 대해 빠른 전체 텍스트 검색을 수행할 수 있습니다. Atlas Search 인덱스는 인덱싱할 필드, 이러한 필드의 인덱싱 방법 및 기타 선택적 설정을 지정하여 Atlas Search의 동작을 구성합니다. Atlas Search 인덱스에 대해 자세히 알아보려면 Atlas Search 설명서를 참조하세요.

이 가이드에서는 다음 조치를 수행하여 Atlas Search 인덱스를 관리하는 방법에 대해 설명합니다.

참고

이 가이드의 예제에서는 Atlas 샘플 데이터 세트 중 하나인 sample_training 데이터베이스의 posts 컬렉션에 액세스합니다. Atlas 샘플 데이터를 가져오는 방법에 대한 지침은 Atlas 설명서에서 샘플 데이터 로드 를 참조하세요.

Atlas Search 인덱스를 만들려면 먼저 인덱스 사양을 설정하는 SearchIndexModel 인스턴스를 빌드해야 합니다. SearchIndexModel 인스턴스 빌드를 시작하려면 SearchIndexModel::builder() 메서드를 호출합니다.

참고

모델 인스턴스화

Rust 운전자 는 SearchIndexModel 을(를) 포함한 일부 구조체 유형 생성을 위한 빌더 디자인 패턴 을 구현합니다. builder() 메서드를 사용하여 옵션 빌더 메서드를 연결하여 각 유형의 인스턴스 를 구성할 수 있습니다.

Rust 드라이버는 다음과 같은 SearchIndexModel 빌더 메서드를 제공합니다:

  • definition()BSON 문서 매개변수를 허용하고 인덱스 정의를 설정합니다.

  • name(): 문자열 매개변수를 허용하고 인덱스 이름을 설정합니다.

definition() 빌더 메서드에 전달하는 BSON 문서에는 mappings 필드가 포함되어야 합니다. collection에서 지원되는 모든 필드를 자동으로 인덱싱하려면 mappings.dynamic 중첩 필드를 true 로 설정하여 동적 매핑을 활성화합니다. 지정된 필드만 인덱싱하려면 mappings.dynamic 중첩 필드를 false 로 설정하고 인덱싱할 필드 목록을 포함하여 정적 매핑을 활성화합니다.

Atlas Search 필드 매핑

Atlas Search 필드 매핑에 대해 자세히 알아보려면 Atlas 설명서에서 필드 매핑 정의 를 참조하세요.

다음 예에서는 SearchIndexModel 인스턴스에 이름이 example_index 인 인덱스에 대한 사양을 생성합니다. 이 코드는 bodydate 필드만 인덱싱하도록 정적 매핑을 설정합니다.

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() 메서드를 호출하여 컬렉션에 Atlas Search 인덱스를 생성할 수 있습니다. 이 메서드는 SearchIndexModel 인스턴스에 지정된 인덱스 모델을 매개변수로 받아들입니다.

다음 예제에서는 posts collection에 Atlas Search를 생성합니다. 이 코드는 인덱스 이름을 설정하고 동적 매핑을 활성화하는 SearchIndexModel 를 생성합니다. 그런 다음 이 코드는 SearchIndexModel 인스턴스를 create_search_index() 메서드에 전달하여 Atlas 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).await?;
println!("Created Atlas Search index:\n{}", result);
Created Atlas Search index:
"example_index"

Collection 인스턴스에서 create_search_indexes() 메서드를 호출하여 한 번에 여러 Atlas Search 인덱스를 생성할 수 있습니다. 이 메서드는 인덱스 모델 목록을 매개변수로 받아들입니다. 이 매개변수는 SearchIndexModel 인스턴스로 구성된 벡터로 지정됩니다.

다음 예제에서는 posts collection에 dynamic_indexstatic_index 라는 두 개의 Atlas Search 검색 인덱스를 만듭니다. 이 코드는 인덱스 이름과 정의를 지정하는 각 인덱스에 대해 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).await?;
println!("Created Atlas Search indexes:\n{:?}", result);
Created Atlas Search indexes:
["dynamic_index", "static_index"]

컬렉션의 기존 Atlas Search 인덱스에 대한 정보는 컬렉션에서 list_search_indexes() 메서드를 호출하여 액세스할 수 있습니다.

다음 예시는 이 페이지의 '다중 검색 인덱스 생성' 섹션에서 생성된 Atlas Search 인덱스에 대한 정보에 액세스합니다. 이 코드는 list_search_indexes() 메서드를 호출하고 컬렉션의 모든 Atlas Search 인덱스를 출력합니다.

let mut cursor = my_coll.list_search_indexes().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() 메서드를 호출하여 Atlas Search 인덱스를 업데이트할 수 있습니다. 이 메서드는 다음 매개 변수를 허용합니다:

  • 업데이트할 인덱스의 이름

  • 수정된 인덱스 정의 문서

다음 예는 이 페이지의 다중 검색 인덱스 생성 섹션에서 생성된 static_index라는 Atlas Search 인덱스를 업데이트합니다. 이 코드는 정적 매핑 대신 동적 매핑을 사용하도록 인덱스에 지시하는 새로운 인덱스 정의 문서를 생성합니다. 그런 다음 코드는 update_search_index() 메서드를 호출하여 인덱스를 업데이트합니다.

let name = "static_index";
let definition = doc! { "mappings": doc! {"dynamic": true} };
my_coll.update_search_index(name, definition).await?;

Collection 인스턴스에서 delete_search_index() 메서드를 호출하여 Atlas Search 인덱스를 삭제할 수 있습니다. 이 메서드는 삭제 인덱스의 이름을 매개변수로 받습니다.

다음 예에서는 이 페이지 의 Atlas Search 인덱스 만들기 섹션에서 생성된 Atlas Search (이)라는 이름의 인덱스를 삭제합니다.example_index 이 코드는 인덱스 이름을 delete_search_index() 메서드에 전달하여 인덱스를 삭제합니다.

let name = "example_index";
my_coll.drop_search_index(name).await?;

Rust 드라이버를 사용하여 생성할 수 있는 다른 인덱스에 대해 알아보려면 인덱스 가이드를 참조하세요.

Atlas Search에 대해 자세히 알아보려면 다음 Atlas 설명서를 참조하세요.

이 가이드에서 사용되는 메서드 또는 유형에 대해 자세히 알아보려면 다음 API 문서를 참조하세요.

돌아가기

Indexes