Docs Menu
Docs Home
/
MongoDB Atlas
/ /

1단계: Atlas Search 인덱스 만들기

이 페이지의 내용

  • Atlas UI
  • Atlas Search API
  • Atlas CLI
  • MongoDB Compass
  • 프로그래밍 방식
  • 다음 단계

중요

서버리스 인스턴스에서는 사용할 수 없는 기능입니다.

서버리스 인스턴스는 현재 이 기능을 지원하지 않습니다. 자세한 내용은 서버리스 인스턴스 제한 사항을 참조하세요.

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을 사용합니다.

1
  1. 아직 표시되지 않은 경우 탐색 표시줄의 Organizations 메뉴에서 원하는 프로젝트가 포함된 조직을 선택합니다.

  2. 아직 표시되지 않은 경우 탐색 표시줄의 Projects 메뉴에서 원하는 프로젝트를 선택합니다.

  3. 아직 표시되지 않은 경우 사이드바에서 Clusters를 클릭합니다.

    Clusters(클러스터) 페이지가 표시됩니다.

2

사이드바, Data Explorer 또는 클러스터 세부 정보 페이지에서 Atlas Search 페이지로 이동할 수 있습니다.

  1. 사이드바에서 Services 제목 아래의 Atlas Search를 클릭합니다.

  2. Select data source 드롭다운에서 클러스터를 선택하고 Go to Atlas Search를 클릭합니다.

    Atlas Search 페이지가 표시됩니다.

  1. cluster의 Browse Collections 버튼을 클릭합니다.

  2. 데이터베이스를 확장하고 컬렉션을 선택합니다.

  3. 컬렉션의 Search Indexes 탭을 클릭합니다.

    Atlas Search 페이지가 표시됩니다.

  1. 클러스터 이름을 클릭합니다.

  2. Atlas Search 탭을 클릭합니다.

    Atlas Search 페이지가 표시됩니다.

3
4
  • 안내를 따라 진행하고자 할 때는 Atlas Search Visual Editor를 선택합니다.

  • 원시 인덱스 정의를 편집하고 싶다면, Atlas Search JSON Editor을 선택합니다.

5
  1. Index Name 필드에 default를 입력합니다.

    인덱스 이름을 default로 지정하면 $search 파이프라인 단계에서 index 매개변수를 지정할 필요가 없습니다. 인덱스에 사용자 지정 이름을 지정하는 경우 index 매개변수에 이 이름을 지정해야 합니다.

  2. Database and Collection 섹션에서 sample_mflix 데이터베이스를 찾고 movies 컬렉션을 선택합니다.

6

동적 매핑 또는 정적 매핑을 사용하는 Atlas Search 인덱스를 만들 수 있습니다. 동적 및 정적 매핑에 대해 자세히 알아보려면 정적 및 동적 매핑을 참조하세요.

다음 인덱스 정의는 movies 컬렉션에서 지원되는 유형의 필드를 동적으로 인덱싱합니다. Atlas user 인터페이스에서 Atlas Search Visual Editor 또는 Atlas Search JSON Editor을(를) 사용하여 인덱스를 생성할 수 있습니다.

  1. Next를 클릭합니다.

  2. movies 컬렉션에 대한 "default" 인덱스 정의를 검토합니다.

  1. Next를 클릭합니다.

  2. 인덱스 정의를 검토합니다.

    인덱스 정의는 다음과 비슷해야 합니다:

    {
    "mappings": {
    "dynamic": true
    }
    }

    위의 인덱스 정의는 movies 컬렉션의 각 문서에서 지원되는 유형의 필드를 동적으로 인덱싱합니다.

  3. Next를 클릭합니다.

7
8
9

인덱스가 작성 중임을 보여주는 모달 창이 표시됩니다. Close 버튼을 클릭합니다.

10

인덱스 작성에는 약 1분 정도가 소요됩니다. 작성하는 동안 Status 열은 Build in Progress을 읽습니다. 작성이 완료되면 Status 열에 Active이 표시됩니다.

1

다음 인덱스 정의는 movies 컬렉션에서 지원되는 유형의 필드를 동적으로 인덱싱합니다.

1PUBLIC_KEY=MY_PUBLIC_KEY # replace replace with your public key
2PRIVATE_KEY=MY_PRIVATE_KEY # replace with your private key
3GROUP_ID=YOUR_GROUP_ID # replace with your project ID
4CLUSTER_NAME=YOUR_CLUSTER_NAME # replace with your cluster's name
5
6curl --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 }'
2

샘플 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을 반환합니다.

3
1{
2 "collectionName" : "movies",
3 "database" : "sample_mflix",
4 "indexID" : "60bfd25f59fc81594354eed3",
5 "mappings" : {
6 "dynamic" : true
7 },
8 "name" : "default",
9 "status" : "IN_PROGRESS"
10}

참고

Atlas CLI를 사용하여 만든 로컬 Atlas 배포와 함께 Atlas Search를 사용할 수도 있습니다. 자세한 내용은 로컬 Atlas 배포 만들기를 참조하세요.

1

다음 샘플 인덱스 정의를 복사한 다음, 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}
2

다음 샘플 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는 기본 프로필을 사용합니다.
3

요청을 실행합니다. Atlas Search가 인덱스 생성을 시작하면 이 응답을 받게 됩니다:

{
"collectionName": "movies",
"database": "sample_mflix",
"indexID": <index-id>,
"mappings": {
"dynamic": true
},
"name": <index-name>,
"status": "IN_PROGRESS"
}

MongoDB Compass를 사용해 M10 이상의 클러스터에서 MongoDB 7.0 또는 그 이후의 버전을 실행하는 클러스터에 Atlas Search 인덱스를 생성할 수 있습니다.

1

Compass를 열고 Atlas 클러스터에 연결합니다. 연결에 대한 자세한 내용은 Compass를 통한 연결을 참조하세요.

2

Database 화면에서 sample_mflix 데이터베이스를 클릭한 다음 movies collection을 클릭합니다.

3
  1. Indexes 탭을 클릭한 다음 Search Indexes을(를) 선택합니다.

  2. Create Index를 클릭하여 인덱스 생성 대화 상자를 엽니다.

  3. 인덱스의 이름을 지정한 다음 검색 인덱스 정의를 지정합니다.

    인덱스 이름

    default

    인덱스 정의
    {
    mappings: { dynamic: true }
    }
  4. Create Search Index를 클릭합니다.

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 이상

언어 선택 드롭다운 메뉴를 사용하여 이 섹션에 있는 예시의 언어를 설정합니다.


1

터미널 창에서 mongosh 를 열고 클러스터에 연결합니다. 연결에 대한 자세한 지침은 mongosh 를 통한 연결을 참조하세요.

2

mongosh 프롬프트에서 다음 명령을 실행합니다.

use sample_mflix
3
db.movies.createSearchIndex(
"default",
{ mappings: { dynamic: true } }
)
default
1
  1. create-index-tutorial라는 새 디렉터리를 만들고 dotnet new 명령으로 프로젝트를 초기화합니다.

    mkdir create-index-tutorial
    cd create-index-tutorial
    dotnet new console
  2. .NET/C# 드라이버를 프로젝트에 종속성으로 추가합니다.

    dotnet add package MongoDB.Driver
2
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);
3

연결 문자열에는 데이터베이스 사용자의 자격 증명이 포함되어 있어야 합니다. 자세한 내용은 드라이버를 통해 연결하기를 참조하세요.

4
dotnet run csharp-create-index.csproj
default
1
2
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);
3

연결 문자열에는 데이터베이스 사용자의 자격 증명이 포함되어 있어야 합니다. 자세한 내용은 드라이버를 통해 연결하기를 참조하세요.

4

인덱스를 만들려면 다음 명령을 실행합니다:

node create-index.js
default

이제 인덱스을 만들었으니 2단계: Atlas 검색 쿼리 실행으로진행하세요.