1단계: Atlas Search 인덱스 만들기
Atlas Search 인덱스는 데이터를 쉽게 검색할 수 있는 형식으로 분류하는 데이터 구조입니다. 용어와 해당 용어가 포함된 문서 간의 매핑입니다. Atlas Search 인덱스를 활성화하면 특정 식별자를 사용하여 문서를 더 빠르게 검색할 수 있습니다. Atlas Search를 사용하여 Atlas 클러스터의 데이터를 쿼리하려면 Atlas Search 인덱스를 구성해야 합니다.
단일 필드 또는 여러 필드에 대해 Atlas Search 인덱스를 만들 수 있습니다. 쿼리 시점에 관련 데이터를 포함하는 문서를 빠르게 검색할 수 있도록, 데이터를 정렬하거나 필터링하는 데 정기적으로 사용하는 필드를 인덱싱하는 것이 좋습니다.
Atlas UI, Atlas Search API, Atlas CLI, MongoDB Compass 또는 선호하는 언어의 지원되는 MongoDB 드라이버를 사용하여 Atlas Search 인덱스를 생성할 수 있습니다.
이 튜토리얼에서는 샘플 데이터세트의 sample_mflix.movies
collection을 사용합니다.
Atlas UI
AtlasGo Atlas 에서 프로젝트 의 Clusters 페이지로 고 (Go) 합니다.
아직 표시되지 않은 경우 탐색 표시줄의 Organizations 메뉴에서 원하는 프로젝트가 포함된 조직을 선택합니다.
아직 표시되지 않은 경우 탐색 표시줄의 Projects 메뉴에서 원하는 프로젝트를 선택합니다.
아직 표시되지 않은 경우 사이드바에서 Clusters를 클릭합니다.
Clusters(클러스터) 페이지가 표시됩니다.
클러스터의 Atlas Search 페이지로 이동합니다.
사이드바, Data Explorer 또는 클러스터 세부 정보 페이지에서 Atlas Search 페이지로 이동할 수 있습니다.
사이드바에서 Services 제목 아래의 Atlas Search를 클릭합니다.
Select data source 드롭다운에서 클러스터를 선택하고 Go to Atlas Search를 클릭합니다.
Atlas Search 페이지가 표시됩니다.
cluster의 Browse Collections 버튼을 클릭합니다.
데이터베이스를 확장하고 컬렉션을 선택합니다.
컬렉션의 Search Indexes 탭을 클릭합니다.
Atlas Search 페이지가 표시됩니다.
클러스터 이름을 클릭합니다.
Atlas Search 탭을 클릭합니다.
Atlas Search 페이지가 표시됩니다.
Index Name을 입력하고 Database and Collection을 설정합니다.
Index Name 필드에
default
를 입력합니다.인덱스 이름을
default
로 지정하면 $search 파이프라인 단계에서index
매개변수를 지정할 필요가 없습니다. 인덱스에 사용자 지정 이름을 지정하는 경우index
매개변수에 이 이름을 지정해야 합니다.Database and Collection 섹션에서
sample_mflix
데이터베이스를 찾고movies
컬렉션을 선택합니다.
인덱스 정의를 지정합니다.
동적 매핑 또는 정적 매핑을 사용하는 Atlas Search 인덱스를 만들 수 있습니다. 동적 및 정적 매핑에 대해 자세히 알아보려면 정적 및 동적 매핑을 참조하세요.
다음 인덱스 정의는 movies
컬렉션에서 지원되는 유형의 필드를 동적으로 인덱싱합니다. Atlas user 인터페이스에서 Atlas Search Visual Editor 또는 Atlas Search JSON Editor을(를) 사용하여 인덱스를 생성할 수 있습니다.
비주얼 편집기
Next를 클릭합니다.
movies
컬렉션에 대한"default"
인덱스 정의를 검토합니다.
JSON 에디터
Next를 클릭합니다.
인덱스 정의를 검토합니다.
인덱스 정의는 다음과 비슷해야 합니다:
{ "mappings": { "dynamic": true } } 위의 인덱스 정의는
movies
컬렉션의 각 문서에서 지원되는 유형의 필드를 동적으로 인덱싱합니다.Next를 클릭합니다.
Atlas Search API
원하는 텍스트 편집기에 샘플 cURL 요청을 복사하여 붙여넣습니다.
다음 인덱스 정의는 movies
컬렉션에서 지원되는 유형의 필드를 동적으로 인덱싱합니다.
1 PUBLIC_KEY=MY_PUBLIC_KEY # replace replace with your public key 2 PRIVATE_KEY=MY_PRIVATE_KEY # replace with your private key 3 GROUP_ID=YOUR_GROUP_ID # replace with your project ID 4 CLUSTER_NAME=YOUR_CLUSTER_NAME # replace with your cluster's name 5 6 curl --user "$PUBLIC_KEY:$PRIVATE_KEY" --digest \ 7 --header "Content-Type: application/json" \ 8 --include \ 9 --request POST "https://cloud.mongodb.com/api/atlas/v2/groups/$GROUP_ID/clusters/$CLUSTER_NAME/search/indexes?pretty=true" \ 10 --data '{ 11 "collectionName": "movies", 12 "database": "sample_mflix", 13 "definition":{ 14 "mappings": { 15 "dynamic": true 16 } 17 }, 18 "name": "default" 19 }'
샘플 cURL 요청에서 변수를 바꿉니다.
샘플 cURL 요청은 이러한 변수를 사용합니다. cURL 명령을 실행하여 Atlas Search 인덱스를 생성하기 전에 이러한 변수를 원하는 값으로 바꿉니다.
이름 | 유형 | 설명 |
---|---|---|
PUBLIC_KEY | 문자열 | API 자격 증명을 위한 공개 API 키입니다. |
PRIVATE_KEY | 문자열 | API 자격 증명을 위한 비공개 API 키입니다. |
GROUP_ID | 문자열 | 고유한 24자리 16진수 문자열로, Atlas Search 인덱스를 생성하려는 collection이 포함된 cluster가 있는 프로젝트를 식별합니다. |
CLUSTER_NAME | 문자열 | 또한, 사람이 읽을 수 있는 레이블로 Atlas Search 인덱스를 생성하려는 collection이 포함된 cluster를 식별합니다. API를 사용하여 CLUSTER_NAME을 가져옵니다. 각 클러스터에 대해 Atlas는 이름 필드에 CLUSTER_NAME을 반환합니다. |
Atlas CLI
참고
Atlas CLI를 사용하여 만든 로컬 Atlas 배포와 함께 Atlas Search를 사용할 수도 있습니다. 자세한 내용은 로컬 Atlas 배포 만들기를 참조하세요.
JSON 인덱스 정의를 파일로 생성하고 저장합니다.
다음 샘플 인덱스 정의를 복사한 다음, JSON 인덱스 예시를 새 파일에 붙여넣고 파일을 저장합니다.
다음 인덱스 정의는 movies
컬렉션에서 지원되는 유형의 필드를 동적으로 인덱싱합니다.
1 { 2 "name": "INDEX_NAME", 3 "clusterName": "CLUSTER_NAME", 4 "collectionName": "movies", 5 "database": "sample_mflix", 6 "mappings": { 7 "dynamic": true 8 } 9 }
샘플 Atlas CLI 요청을 복사하여 수정합니다.
다음 샘플 Atlas CLI 요청을 즐겨 사용하는 텍스트 편집기에 붙여넣고 변수를 바꿉니다.
atlas clusters search index create \ --clusterName CLUSTER_NAME \ --file FILE_PATH \ --projectId PROJECT_ID --profile PROFILE_NAME
샘플 Atlas CLI 요청은 이러한 변수를 사용합니다. Atlas Search 인덱스을 생성하는 명령을 실행하기 전에 이러한 변수를 원하는 값으로 바꾸십시오.
이름 | 유형 | 설명 |
---|---|---|
PROJECT_ID | 문자열 | cluster가 포함된 프로젝트를 식별하는 고유한 24자리 16진수 문자열입니다. cluster에는 Atlas Search 인덱스을 생성하려는 collection이 포함되어 있습니다. |
CLUSTER_NAME | 문자열 | cluster를 식별하는 고유한 24자리 16진수 문자열입니다. cluster에는 Atlas Search 인덱스을 생성하려는 collection이 포함되어 있습니다. |
FILE_PATH | 문자열 | 이전 단계에서 생성하고 저장한 JSON 인덱스 파일의 경로로, .json 파일 확장자를 포함합니다. |
PROFILE_NAME | 문자열 | 선택 사항입니다. 프로젝트의 공개 키와 비공개 키를 설정하는 프로필의 이름입니다. 자세한 내용은 연결 설정 저장을 참조하세요. --profile 플래그를 제거하면 Atlas CLI는 기본 프로필을 사용합니다. |
MongoDB Compass
MongoDB Compass를 사용해 M10
이상의 클러스터에서 MongoDB 7.0 또는 그 이후의 버전을 실행하는 클러스터에 Atlas Search 인덱스를 생성할 수 있습니다.
MongoDB Compass에서 Atlas 클러스터에 연결합니다.
Compass를 열고 Atlas 클러스터에 연결합니다. 연결에 대한 자세한 내용은 Compass를 통한 연결을 참조하세요.
프로그래밍 방식
mongosh
또는 지원되는 MongoDB 드라이버 를 원하는 언어로 사용하여 프로그래밍 방식으로 Atlas Search 인덱스를 만들 수 있습니다.
전제 조건
모든 클러스터 계층 에서 프로그래밍 방식으로 Atlas Search 인덱스를 생성하고 관리 하려면 다음 MongoDB 드라이버 중 하나를 사용할 수 있습니다.
MongoDB 드라이버 | 버전 |
---|---|
1.25.0 이상 | |
3.9.0 이상 | |
2.21.0 이상 | |
1.13.0 이상 | |
4.11.0 이상 | |
9.0 이상 | |
3.3.0 이상 | |
5.2.0 이상 | |
5.6.0 이상 | |
1.17.0 이상 | |
4.5 이상 | |
2.19.2 이상 | |
2.8.0 이상 | |
5.2.0 이상 |
➤ 언어 선택 드롭다운 메뉴를 사용하여 이 섹션에 있는 예시의 언어를 설정합니다.
절차
mongosh
에서 클러스터에 연결합니다.
터미널 창에서 mongosh
를 열고 클러스터에 연결합니다. 연결에 대한 자세한 지침은 mongosh
를 통한 연결을 참조하세요.
sample_mflix
데이터베이스를 사용합니다.
mongosh
프롬프트에서 다음 명령을 실행합니다.
use sample_mflix
쿼리를 복사하여 Program.cs
파일에 붙여넣습니다.
using MongoDB.Bson; using MongoDB.Driver; // connect to your Atlas deployment var uri = "<connection-string>"; var client = new MongoClient(uri); var db = client.GetDatabase("sample_mflix"); var collection = db.GetCollection<BsonDocument>("movies"); // define your Atlas Search index var index = new CreateSearchIndexModel( "default", new BsonDocument { { "mappings", new BsonDocument { { "dynamic", true } } } }); var result = collection.SearchIndexes.CreateOne(index); Console.WriteLine(result);
쿼리에서 <connection-string>
을 바꾼 다음 파일을 저장합니다.
연결 문자열에는 데이터베이스 사용자의 자격 증명이 포함되어 있어야 합니다. 자세한 내용은 드라이버를 통해 연결하기를 참조하세요.
다음 코드를 복사하여 create-index.js
파일에 붙여넣습니다.
const { MongoClient } = require("mongodb"); // connect to your Atlas deployment const uri = "<connection-string>"; const client = new MongoClient(uri); async function run() { try { // set namespace const database = client.db("sample_mflix"); const collection = database.collection("movies"); // define your Atlas Search index const index = { name: "default", definition: { /* search index definition fields */ "mappings": { "dynamic": true } } } // run the helper method const result = await collection.createSearchIndex(index); console.log(result); } finally { await client.close(); } } run().catch(console.dir);
쿼리에서 <connection-string>
을 바꾼 다음 파일을 저장합니다.
연결 문자열에는 데이터베이스 사용자의 자격 증명이 포함되어 있어야 합니다. 자세한 내용은 드라이버를 통해 연결하기를 참조하세요.
다음 단계
이제 인덱스을 만들었으니 2단계: Atlas 검색 쿼리 실행으로진행하세요.