Docs Menu
Docs Home
/
MongoDB Atlas
/ /

Atlas Search 인덱스 만들기

이 페이지의 내용

  • 전제 조건
  • 필요한 액세스 권한
  • 인덱스 제한 사항
  • 인덱스 크기 추정
  • Atlas Search 인덱스 만들기

Atlas Search 인덱스는 데이터를 쉽게 검색할 수 있는 형식으로 분류하는 데이터 구조입니다. 용어와 해당 용어가 포함된 문서 간의 매핑입니다. Atlas Search 인덱스를 활성화하면 특정 식별자를 사용하여 문서를 더 빠르게 검색할 수 있습니다. Atlas Search를 사용하여 Atlas 클러스터의 데이터를 쿼리하려면 Atlas Search 인덱스를 구성해야 합니다.

단일 필드 또는 여러 필드에 대해 Atlas Search 인덱스를 만들 수 있습니다. 쿼리 시점에 관련 데이터를 포함하는 문서를 빠르게 검색할 수 있도록, 데이터를 정렬하거나 필터링하는 데 정기적으로 사용하는 필드를 인덱싱하는 것이 좋습니다.

Atlas UI, API, Atlas CLI, and Terraform을 통해 Atlas 클러스터에서 Time Series 컬렉션을 제외한 모든 컬렉션에 대한 Atlas Search 인덱스를 만들 수 있습니다.

중요

$out 집계 단계를 사용하여 Atlas Search 인덱스가 있는 컬렉션을 수정하는 경우 검색 인덱스를 삭제하고 다시 생성해야 합니다. 가능하면 $out 대신 $merge를 사용하는 것이 좋습니다.

Atlas Search 인덱스를 만들려면 다음이 포함된 Atlas 클러스터가 있어야 합니다:

  • 모든 클러스터 계층에서 MongoDB 버전 4.2 이상.

  • Atlas Search 인덱스를 생성할 컬렉션입니다.

다음 표는 각 역할이 지원하는 액세스 모드를 보여줍니다.

역할
작업
Atlas UI
Atlas API
Atlas Search API
Atlas CLI

Project Data Access Read Only 이상의 역할

Atlas Search 분석기 및 인덱스를 보려면 다음 단계를 따르세요.

Project Data Access Admin 이상의 역할

Atlas Search 분석기 및 인덱스를 생성 및 관리하고 API 키에 역할을 할당합니다.

API 키에 대한 액세스 생성 목록 항목을 만들고 API 키에 대한 액세스 목록에 표시되는 클라이언트에서 요청을 보냅니다.

Atlas UI 또는 API를 사용하여 Atlas Search 인덱스를 생성, 확인, 편집 및 삭제합니다.

인덱스를 생성하려는 데이터베이스에 최소한 readWriteAnyDatabase 역할 또는 readWrite 액세스 권한이 있어야 합니다. 자세한 내용은 기본 제공 역할 또는 특정 권한을 참조하세요.

  • 초과하여 만들 수 없습니다.

    • M0 클러스터의 인덱스 3개.

    • M2 클러스터의 인덱스 5개.

    • M5 클러스터의 인덱스 10개.

    단일 M10+ 클러스터 에 2 500 개 이하의 검색 인덱스를 생성하는 것이 좋습니다.

  • Compass 에서 Atlas Search 인덱스 를 만들려면 M10+ MongoDB 이상 실행 하는 Atlas cluster 가 있어야 7.0 합니다.

컬렉션의 하위 집합에 인덱스를 생성하여 인덱스의 크기를 추정할 수 있습니다.

  1. 데이터 샘플을 가져와서 샘플 데이터로 새 컬렉션을 생성합니다.

  2. 샘플 데이터를 사용하여 컬렉션에 검색 인덱스를 생성합니다.

    참고

    샘플 데이터의 인덱스 정의는 전체 컬렉션에서 생성하려는 인덱스 정의와 동일해야 합니다.

  3. 데이터의 총 크기에 따라 샘플 데이터 인덱스의 크기를 조정합니다.

    estimated-index-size = ( subset-data-index-size / subset-data-size ) x total-collection-data-size

예시

이 예시에서는 sample_mflix.movies 네임스페이스를 사용합니다. 먼저 movies 컬렉션에서 문서 10개를 무작위로 선택하기 위해 $sample을 실행하고 $sample 출력 문서를 포함하는 sample_data 컬렉션을 새로 만듭니다.

db.movies.aggregate([
{ $sample: { size: 10 } },
{ $out: "sample_data" }
])
[
{
_id: ObjectId('573a13bbf29313caabd53f9c'),
plot: "Three years ago, in real-life, Hama Ali, a charismatic actor from Iraq famous locally for his performance as Iraq's version of Superman, met Ayca on a film-set. He and Ayca, a fiery actress...",
genres: [ 'Drama', 'Romance', 'War' ],
runtime: 93,
cast: [
'Ayèa Damgaci',
'Hama Ali Kahn',
'Cengiz Bozkurt',
'Nesrin Cavadzade'
],
num_mflix_comments: 1,
poster: 'https://m.media-amazon.com/images/M/MV5BMjA1OTI1MjI4OV5BMl5BanBnXkFtZTgwODk1MTA2MDE@._V1_SY1000_SX677_AL_.jpg',
title: 'Gitmek: My Marlon and Brando',
fullplot: "Three years ago, in real-life, Hama Ali, a charismatic actor from Iraq famous locally for his performance as Iraq's version of Superman, met Ayca on a film-set. He and Ayca, a fiery actress from Turkey, had a passionate love affair before returning to their respective homes. From his Kurdish village, Hama Ali sends Ayca video love letters which he has filmed on his handycam. She watches them from her sofa in Istanbul, with her cat for company. The video love letters capture the hellish violence engulfing Iraq, the goats and uncles populating his rural area, and also his tender affection towards her. Feeling suffocated by her own city and angered by the indifference towards the war that surrounds her, Ayca decides to make the journey eastwards to Iraq to be reunited with her lover. GITMEK, a dramatic feature film, is based on the true story of Ayca's departure from Istanbul and her extraordinary journey to the Iraqi border. At a time when many people were fleeing from East to West in search of safety, Ayca makes the opposite journey, in search of love. She is helped by immigrant artists who live in the slums of Istanbul and the mothers of long distance truck drivers who she meets at various border towns. The journey takes her through breathtaking landscapes, strange encounters and terrifying times.",
languages: [ 'English', 'Kurdish', 'Turkish' ],
released: ISODate('2008-11-14T00:00:00.000Z'),
directors: [ 'Huseyin Karabey' ],
writers: [ 'Ayèa Damgaci', 'Huseyin Karabey' ],
awards: { wins: 12, nominations: 4, text: '12 wins & 4 nominations.' },
lastupdated: '2015-07-04 00:20:59.083000000',
year: 2008,
imdb: { rating: 6.6, votes: 628, id: 920460 },
countries: [ 'Turkey' ],
type: 'movie',
tomatoes: {
viewer: { rating: 3.7, numReviews: 181, meter: 79 },
lastUpdated: ISODate('2015-07-16T18:10:38.000Z')
}
},
{
_id: ObjectId('573a139af29313caabcefb6a'),
plot: '48 hours of intersecting lives and crimes in Los Angeles.',
genres: [ 'Comedy', 'Crime', 'Drama' ],
runtime: 104,
rated: 'R',
cast: [
'Danny Aiello',
'Greg Cruttwell',
'Jeff Daniels',
'Teri Hatcher'
],
num_mflix_comments: 1,
poster: 'https://m.media-amazon.com/images/M/MV5BZDI0ZmFmYTgtMTQ5OS00MTVmLTgwNWYtNzIyY2Y5NjYxNzgyXkEyXkFqcGdeQXVyNzc5MjA3OA@@._V1_SY1000_SX677_AL_.jpg',
title: '2 Days in the Valley',
fullplot: 'John Herzfeld deftly welds together a multitude of subplots-- a loser hitman and a cool assassin involved in an insurance scam; a washed-up director, turned suicidal, if only he had someone to care for his beloved dog; a snooty art dealer, wracked by kidney stones, cared for by his devoted assistant; a grungy deranged vice cop, now partnered with a fresh-faced rookie; and two beautiful and jealous women entangled in their deadly scheme--into a spoof of the crime thriller genre.',
languages: [ 'English', 'Vietnamese' ],
released: ISODate('1996-09-27T00:00:00.000Z'),
directors: [ 'John Herzfeld' ],
writers: [ 'John Herzfeld' ],
awards: { wins: 0, nominations: 1, text: '1 nomination.' },
lastupdated: '2015-09-11 00:42:22.520000000',
year: 1996,
imdb: { rating: 6.5, votes: 15019, id: 115438 },
countries: [ 'USA' ],
type: 'movie',
tomatoes: {
viewer: { rating: 3, numReviews: 14630, meter: 55 },
dvd: ISODate('2001-08-07T00:00:00.000Z'),
critic: { rating: 6, numReviews: 53, meter: 60 },
lastUpdated: ISODate('2015-08-19T18:25:36.000Z'),
consensus: 'A labyrinthine thriller with a host of memorable characters, 2 Days in the Valley is an uneven but intriguing thriller/black comedy.',
rotten: 21,
production: 'HBO Video',
fresh: 32
}
},
{
_id: ObjectId('573a13bdf29313caabd5943e'),
fullplot: "When Emily Parris exposes a secret society of teenage girls who have slipped out of the world of social media and into another world they've discovered in the woods at night. When she accuses the girls of committing sexually deviant activities, Emily sends the small American town into a atmosphere of hysteria and the national media spotlight. The mystery deepens when each of the accused girls upholds a vow of silence.",
imdb: { rating: 6.2, votes: 861, id: 1015471 },
year: 2014,
plot: "When a teenage girl says she's the victim of a secret network called The Sisterhood of Night, a quiet suburban town becomes the backdrop for a modern-day Salem witch trial.",
genres: [ 'Drama', 'Mystery', 'Thriller' ],
rated: 'PG-13',
metacritic: 60,
title: 'The Sisterhood of Night',
lastupdated: '2015-09-10 17:22:16.113000000',
languages: [ 'English' ],
writers: [ 'Marilyn Fu (screenplay)', 'Steven Millhauser (short story)' ],
type: 'movie',
tomatoes: {
website: 'http://www.thesisterhoodofnight-movie.com/',
viewer: { rating: 3.6, numReviews: 382, meter: 65 },
dvd: ISODate('2015-06-09T00:00:00.000Z'),
critic: { rating: 6.6, numReviews: 19, meter: 79 },
boxOffice: '$5.3k',
rotten: 4,
production: 'Cine Mosaic',
lastUpdated: ISODate('2015-09-13T17:24:37.000Z'),
fresh: 15
},
poster: 'https://m.media-amazon.com/images/M/MV5BODg3MjE0MDM4N15BMl5BanBnXkFtZTgwOTY0MjE5NDE@._V1_SY1000_SX677_AL_.jpg',
num_mflix_comments: 1,
released: ISODate('2014-10-18T00:00:00.000Z'),
awards: { wins: 2, nominations: 3, text: '2 wins & 3 nominations.' },
countries: [ 'USA' ],
cast: [
'Georgie Henley',
'Kara Hayward',
'Willa Cuthrell',
'Olivia DeJonge'
],
directors: [ 'Caryn Waechter' ],
runtime: 104
},
{
_id: ObjectId('573a13c4f29313caabd6d7bf'),
plot: 'A film producer struggles with suicidal despair.',
genres: [ 'Drama' ],
runtime: 110,
metacritic: 76,
cast: [
'Louis-Do de Lencquesaing',
'Chiara Caselli',
'Alice de Lencquesaing',
'Alice Gautier'
],
num_mflix_comments: 0,
poster: 'https://m.media-amazon.com/images/M/MV5BMTUxODczODA2NV5BMl5BanBnXkFtZTcwNzExMjQ1Mw@@._V1_SY1000_SX677_AL_.jpg',
title: 'Father of My Children',
fullplot: "In the first half, Gregoire, a movie producer of great charm, owner of Moon Films, plays with his younger daughters, talks with his wife and his eldest daughter, and keeps his studio going while one project hemorrhages money and creditors circle. In the second half, Sylvia, his Italian wife, tries to hold the family together as she looks fully into Moon Films' troubles. She meets with a banker, a temperamental Swede, Russian TV magnates, a film lab exec, and Moon's lawyer. Clèmence, the oldest daughter, goes on her own search. Debt can crush; how does a family pick up the pieces?",
languages: [ 'French' ],
released: ISODate('2009-12-16T00:00:00.000Z'),
directors: [ 'Mia Hansen-Lève' ],
writers: [ 'Mia Hansen-Lève (screenplay)' ],
awards: { wins: 2, nominations: 3, text: '2 wins & 3 nominations.' },
lastupdated: '2015-09-02 00:01:22.897000000',
year: 2009,
imdb: { rating: 6.7, votes: 1820, id: 1356928 },
countries: [ 'France', 'Germany', 'Belgium' ],
type: 'movie',
tomatoes: {
website: 'http://www.filmsdulosange.fr/fr/fr_peredemesenfants.html',
viewer: { rating: 3.3, numReviews: 1232, meter: 60 },
dvd: ISODate('2010-06-21T00:00:00.000Z'),
critic: { rating: 7.4, numReviews: 55, meter: 91 },
lastUpdated: ISODate('2015-09-11T18:38:12.000Z'),
consensus: 'A tragedy gracefully lifted by tender empathy and moments of joy, Father of My Children is a quiet triumph for writer-director Mia Hansen-Love.',
rotten: 5,
production: 'IFC Films',
fresh: 50
}
},
{
_id: ObjectId('573a13a5f29313caabd15cc1'),
plot: 'After a 13-year imprisonment in Hong Kong, a kickboxer challenges the current champion in order to restore his honor.',
genres: [ 'Drama', 'Romance', 'Sport' ],
runtime: 105,
cast: [
'Andy Lau',
'Takako Tokiwa',
'Inthira Charoenpura',
'Apichaya Thanatthanapong'
],
title: 'Ah Fu',
lastupdated: '2015-09-14 12:56:13.823000000',
languages: [ 'Cantonese' ],
released: ISODate('2000-11-21T00:00:00.000Z'),
directors: [ 'Daniel Lee' ],
writers: [ 'Chi-Sing Cheung', 'Daniel Lee' ],
awards: { wins: 1, nominations: 3, text: '1 win & 3 nominations.' },
year: 2000,
imdb: { rating: 6.6, votes: 350, id: 277558 },
countries: [ 'Hong Kong' ],
type: 'movie',
tomatoes: {
viewer: { rating: 3.3, numReviews: 644, meter: 57 },
lastUpdated: ISODate('2015-04-25T18:41:33.000Z')
},
num_mflix_comments: 0
},
{
_id: ObjectId('573a13bef29313caabd5ce2b'),
plot: 'Johann Sebastian Bach llega con su familia a Leipzig para ocupar el puesto de cantor en la Escuela de Santo Tomès...',
genres: [ 'Musical' ],
runtime: 102,
metacritic: 70,
cast: [
'Christian Atanasiu',
'Fèodor Atkine',
'George-Christoph Biller',
'Christian Brembeck'
],
title: 'The Silence Before Bach',
lastupdated: '2015-05-25 00:50:52.210000000',
languages: [ 'Spanish', 'German', 'Catalan' ],
released: ISODate('2007-12-21T00:00:00.000Z'),
directors: [ 'Pere Portabella' ],
writers: [ 'Xavier Albertè', 'Pere Portabella', 'Carles Santos' ],
awards: { wins: 3, nominations: 3, text: '3 wins & 3 nominations.' },
year: 2007,
imdb: { rating: 6.8, votes: 329, id: 1079450 },
countries: [ 'Spain' ],
type: 'movie',
tomatoes: {
website: 'http://www.pereportabella.com/eng/fla/die/home_eng.html',
viewer: { rating: 3.5, numReviews: 391, meter: 64 },
critic: { rating: 6.6, numReviews: 16, meter: 81 },
lastUpdated: ISODate('2015-08-11T19:15:49.000Z'),
rotten: 3,
production: 'Film Forum',
fresh: 13
},
num_mflix_comments: 0
},
{
_id: ObjectId('573a13ccf29313caabd83260'),
plot: 'A woman subject to mental, physical, and sexual abuse on a remote island seeks a way out.',
genres: [ 'Crime', 'Drama', 'Horror' ],
runtime: 115,
cast: [ 'Yeong-hie Seo', 'Seong-won Ji', 'Min-ho Hwang', 'Min Je' ],
num_mflix_comments: 0,
poster: 'https://m.media-amazon.com/images/M/MV5BMjAyNDEwMDgzMl5BMl5BanBnXkFtZTcwNzMyMTYwNQ@@._V1_SY1000_SX677_AL_.jpg',
title: 'Bedevilled',
fullplot: "Hae-won is a beautiful single woman in her thirties who works at a bank in the Seoul city. She leads a busy life until she becomes a witness to an attempted murder case, and at the same time, things get complicated at work. When things get out of hand she is forced to take a vacation so she heads for 'Moodo', a small undeveloped island, where she had once visited to see her grandparents. And where she had befriended a girl named Bok-nam who stills writes to Hae-won asking her to visit despite the fact that Hae-won never bothered to reply. Upon arriving at the island, Hae-won is shocked to see everyone treating Bok-nam like a slave. As practically the only young woman on the island, she is a plaything for all the men and a free laborer for the women. Sick of all the inhumane treatment, Bok-nam had tried to escape the island several times in the past but had failed each time. She begs Hae-won to help her escape the place, but Hae-won remains indifferent not wanting to be involved in complicated situations. When Bok-nam realizes that her own daughter will follow her footsteps, she tries to escape the island with her daughter.",
languages: [ 'Korean' ],
released: ISODate('2010-09-02T00:00:00.000Z'),
directors: [ 'Cheol-soo Jang' ],
writers: [ 'Kwang-young Choi' ],
awards: { wins: 10, nominations: 5, text: '10 wins & 5 nominations.' },
lastupdated: '2015-09-01 01:18:02.960000000',
year: 2010,
imdb: { rating: 7.3, votes: 7983, id: 1646959 },
countries: [ 'South Korea' ],
type: 'movie'
},
{
_id: ObjectId('573a13c7f29313caabd746fe'),
plot: 'A Californian family inherits a castle in Romania. This is especially exciting to the son, who is obsessed with monsters. And he is not disappointed.',
genres: [ 'Comedy', 'Family' ],
runtime: 83,
rated: 'TV-G',
cast: [
'Victoria Justice',
'Chase Ellison',
'Anna Galvin',
'Matt Winston'
],
num_mflix_comments: 0,
poster: 'https://m.media-amazon.com/images/M/MV5BMjU1MmJlMTctY2FiMC00MmU1LWI5NmYtMDc5OWM0NjEzMmI2XkEyXkFqcGdeQXVyNDgyODgxNjE@._V1_SY1000_SX677_AL_.jpg',
title: 'The Boy Who Cried Werewolf',
fullplot: 'A Californian family inherits a castle in Romania. This is especially exciting to the son, who is obsessed with monsters. And he is not disappointed.',
languages: [ 'English' ],
released: ISODate('2010-10-22T00:00:00.000Z'),
directors: [ 'Eric Bross' ],
writers: [ 'Art Edler Brown', 'Douglas Sloan' ],
awards: { wins: 1, nominations: 2, text: '1 win & 2 nominations.' },
lastupdated: '2015-08-20 00:01:59.673000000',
year: 2010,
imdb: { rating: 6.3, votes: 1582, id: 1451423 },
countries: [ 'USA', 'Canada' ],
type: 'movie',
tomatoes: {
viewer: { rating: 3.7, numReviews: 762, meter: 66 },
lastUpdated: ISODate('2015-09-12T17:30:20.000Z')
}
},
{
_id: ObjectId('573a13b4f29313caabd3f473'),
genres: [ 'Documentary' ],
runtime: 85,
title: 'Zero Degrees of Separation',
countries: [ 'Canada' ],
lastupdated: '2015-08-09 00:30:38.977000000',
languages: [ 'Arabic', 'English', 'Hebrew' ],
released: ISODate('2005-06-22T00:00:00.000Z'),
directors: [ 'Elle Flanders' ],
writers: [ 'Elle Flanders' ],
awards: { wins: 1, nominations: 0, text: '1 win.' },
year: 2005,
imdb: { rating: 6.6, votes: 90, id: 454990 },
type: 'movie',
tomatoes: {
viewer: { rating: 3.5, numReviews: 5, meter: 100 },
fresh: 1,
critic: { numReviews: 2 },
rotten: 1,
lastUpdated: ISODate('2015-01-04T23:25:58.000Z')
},
num_mflix_comments: 0
},
{
_id: ObjectId('573a13bff29313caabd5f070'),
plot: 'This hilarious genre-bending comedy follows Gary Brewer, along with girlfriend Holly Brewer (no relation), and best friend Trevor Morehouse as Gary quests to reign supreme at the 2006 Rock, Paper, Scissors World Championships.',
genres: [ 'Comedy' ],
runtime: 85,
cast: [ 'Tim Doiron', 'April Mullen', 'Ryan Tilley', 'Peter Pasyk' ],
num_mflix_comments: 0,
poster: 'https://m.media-amazon.com/images/M/MV5BMTI5MzIwMjA2Ml5BMl5BanBnXkFtZTcwOTcyOTA4MQ@@._V1_SY1000_SX677_AL_.jpg',
title: 'Rock, Paper, Scissors: The Way of the Tosser',
fullplot: 'This hilarious genre-bending comedy follows Gary Brewer, along with girlfriend Holly Brewer (no relation), and best friend Trevor Morehouse as Gary quests to reign supreme at the 2006 Rock, Paper, Scissors World Championships.',
languages: [ 'English' ],
released: ISODate('2007-07-06T00:00:00.000Z'),
directors: [ 'Tim Doiron', 'April Mullen' ],
writers: [ 'Tim Doiron (creator)', 'April Mullen (creator)', 'Tim Doiron' ],
awards: { wins: 2, nominations: 0, text: '2 wins.' },
lastupdated: '2015-08-12 00:01:33.813000000',
year: 2007,
imdb: { rating: 6.2, votes: 316, id: 1121964 },
countries: [ 'Canada' ],
type: 'movie'
}
]

다음으로 $out를 사용하여 sample_data 컬렉션에 추가한 $sample 출력 데이터에 대해 단순히 title 필드에 대한 인덱스를 생성합니다

{
"mappings": {
"dynamic": false,
"fields": {
"title": {
"type": "string"
}
}
}
}

10개의 문서를 포함하는 sample_data 컬렉션의 title 필드에 대한 인덱스 크기는 4.34 KB입니다. sample_data 컬렉션 의 크기는 14.19 KB입니다. movies 컬렉션의 전체 크기는 32.54 MB로 이는 32540 KB입니다. 다음 계산을 사용하여 전체 movies 컬렉션의 인덱스 크기를 추정합니다.

4.34 KB / 14.19 KB = 0.30584918957012 KB (per document)
0.30584918957012 KB x 32540 KB = 9952.3326286117048 KB
9265.466 KB x 0.001 MB = 9.952332628611705 MB

movies 컬렉션의 title 필드에 대해 예상되는 인덱스 크기는 9.95 MB입니다. 그러나 movies 컬렉션의 인덱스 크기는 샘플링되지 않은 다른 문서의 제목 길이에 따라 달라질 수 있습니다.

Atlas UI, MongoDB Compass를 사용하거나 mongosh, Atlas CLI, API 또는 원하는 언어로 지원되는 MongoDB 드라이버를 사용하여 프로그래밍 방식으로 Atlas Search 인덱스를 만들 수 있습니다.

참고

Atlas Search 인덱스는 컬렉션의 일부가 아닌 전체 컬렉션에 적용되어야 합니다.


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


Atlas Search 인덱스를 만들려면 다음을 수행하세요.

1

search/indexes 엔드포인트POST 요청을 보냅니다.

curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--include \
--request POST "https://cloud.mongodb.com/api/atlas/v2/groups/{groupId}/clusters/{clusterName}/search/indexes" \
--data '
{
"collectionName": "string",
"database": "string",
"name": "string",
"type": "search",
"definition":
{
"analyzer": "lucene.<analyzer>",
"analyzers": [
{
"charFilters": [ ... ],
"name": "string",
"tokenFilters": [ ... ],
"tokenizer": { ... }
}
],
"mappings": {
"dynamic": true | false,
"fields": {
"property1": {},
...
}
},
"searchAnalyzer": "lucene.<analyzer>",
"storedSource": {
"include | exclude": [...]
},
"synonyms": [
{
"analyzer": "lucene.<analyzer>",
"name": "string",
"source": {
"collection": "string"
}
}
]
}
}'

이 엔드포인트의 구문 및 매개변수에 대해 자세히 알아보려면 엔드포인트 생성하기를 참조하세요.

2

참고

컬렉션이 존재하지 않는 경우 Atlas는 인덱스를 생성하지 않지만 여전히 200 상태를 반환합니다.

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

Atlas CLI를 사용하여 클러스터에 대한 검색 인덱스를 생성하려면 다음 명령을 실행하세요.

atlas clusters search indexes create [indexName] [options]

명령 구문 및 매개변수에 대한 자세한 내용은 Atlas CLI 문서에서 Atlas 클러스터 검색 인덱스 만들기를 참조하십시오.

참조: 관련 링크

Atlas CLI를 사용하여 지정된 배포에 대한 검색 인덱스를 생성하려면 다음 명령을 실행하세요.

atlas deployments search indexes create [indexName] [options]

명령 구문 및 매개변수에 대해 자세히 알아보려면 검색 인덱스가 생성하는 Atlas 배포에 대한 Atlas CLI 설명서를 참조하세요.

참조: 관련 링크

다음 예시는 구성 파일을 사용하여 비대화식 모드에서 atlas clusters 또는 atlas deployments 명령어를 사용하여 Atlas Search 인덱스를 생성하는 방법을 보여줍니다.

1
{
"collectionName": "movies",
"database": "sample_mflix",
"definition": {
"mappings": {
"dynamic": true
},
},
"name": "searchIndex"
}
2
  1. 다음 명령 중 하나를 실행합니다.

    클라우드 배포:

    atlas clusters search indexes create --file indexDef.json

    로컬 배포:

    atlas deployments search indexes create --file indexDef.json
  2. 배포서버를 지정하고 Enter를 누릅니다.

$search 쿼리의 경우 기본 search 유형의 인덱스를 생성합니다.

Atlas UI에서 Atlas Search 인덱스를 만들려면 다음과 같이 하세요:

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 인덱스 생성 모달 창 스크린샷
클릭하여 확대
  • 안내를 따라 진행하고자 할 때는 Atlas Search Visual Editor를 선택합니다.

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

5
  1. Index Name 필드에 인덱스의 이름을 지정합니다.

    인덱스 이름은 네임스페이스 내에서 고유해야 합니다. 인덱스 이름의 기본값은 default 입니다. 기본 이름을 그대로 사용하거나 다른 이름을 지정할 수 있습니다.

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

  2. Database and Collection 섹션에서 데이터베이스 를 확장하고 인덱스 를 생성할 컬렉션 이름을 선택합니다.

  3. Visual Editor 를 사용하는 경우Next를 클릭합니다.

6

기본 인덱스 정의를 사용하거나 사용자 지정 인덱스 정의를 지정할 수 있습니다.

  • 기본 인덱스 정의는 문서의 필드를 동적으로 매핑한 것이며 모든 컬렉션에서 작동합니다.

  • 사용자 지정 인덱스 정의는 정적 매핑입니다. 인덱싱할 필드, 분석기, 데이터 유형을 지정합니다.

필드 이름
설명
필요성

Index Analyzer

컬렉션 데이터 인덱싱에 사용할 분석기를 지정합니다. 기본적으로 Atlas Search는 표준 분석기("lucene.standard")를 사용합니다.

analyzer JSON 설정에 해당합니다.

옵션

Query Analyzer

텍스트를 검색하기 전에 쿼리 텍스트에 적용할 분석기를 지정합니다. 이 필드를 생략하면 인덱스는 기본적으로 다음 순서로 분석기를 상속합니다.

  1. 지정된 경우 이 필드에 대한 analyzer 옵션입니다.

  2. 지정된 경우 인덱스 에 대한 searchAnalyzer 옵션입니다.

  3. 지정된 경우 인덱스 에 대한 analyzer 옵션입니다.

  4. lucene.standard 분석기입니다.

searchAnalyzer JSON 설정에 해당합니다.

옵션

Dynamic Mapping

필드의 동적 또는 정적 매핑을 지정합니다. 동적 매핑을 사용하지 않으려면 "dynamic":Off로 설정합니다. 기본적으로 동적 매핑은 활성화되어 있습니다. 동적 매핑을 비활성화하는 경우 인덱싱할 필드를 지정해야 합니다. 동적 및 정적 매핑에 대해 자세히 알아보려면 Atlas Search 인덱스 구문 검토를참조하세요.

mappings.dynamic JSON 설정에 해당합니다.

필수 사항

필드 이름
설명
필요성

analyzer

컬렉션 데이터 인덱싱에 사용할 분석기를 지정합니다. 기본적으로 Atlas Search는 표준 분석기("lucene.standard")를 사용합니다.

옵션

searchAnalyzer

텍스트를 검색하기 전에 쿼리 텍스트에 적용할 분석기를 지정합니다. 이 필드를 생략하면 인덱스는 기본적으로 다음 순서로 분석기를 상속합니다.

  1. 지정된 경우 이 필드에 대한 analyzer 옵션입니다.

  2. 지정된 경우 인덱스 에 대한 searchAnalyzer 옵션입니다.

  3. 지정된 경우 인덱스 에 대한 analyzer 옵션입니다.

  4. lucene.standard 분석기입니다.

옵션

mappings.dynamic

필드의 동적 또는 정적 매핑을 지정합니다. 동적 매핑을 사용하지 않으려면 "dynamic":false로 설정합니다. 기본적으로 동적 매핑은 활성화되어 있습니다. 동적 매핑을 비활성화하는 경우 인덱싱할 필드를 지정해야 합니다. 동적 및 정적 매핑에 대해 자세히 알아보려면 Atlas Search 인덱스 구문 검토를참조하세요.

필수 사항

인덱스 정의 설정을 자세히 알아보려면 Atlas 검색 인덱스 구문 검토를 참조하세요.

기본 구성에 만족하는 경우 건너뜁니다. Atlas Search 인덱스를 세분화하려면 다음 단계로 진행하세요.

7

0}을 사용하는 경우 Visual Editor

  1. 다음 설정을 변경하려면 Refine Your Index을 클릭합니다.

    필드 이름
    설명
    필요성

    Field Mappings

    1}Dynamic Mapping Index Configurations 섹션의 이 비활성화된 경우 필수입니다.

    자신만의 필드 매핑을 정의하는 것은 고급 사용자에게만 권장됩니다.

    인덱싱할 필드를 지정합니다. 필드를 추가하려면 다음을 수행해야 합니다.

    1. Add Field 을 클릭하여 Add Field Mapping 창을 엽니다.

    2. 필드에 대해 다음 정보를 지정합니다.

      • Field name - 인덱싱할 필드의 이름입니다.

      • Data Type Configuration - 필드 데이터 유형입니다. 지원되는 데이터 유형과 해당 옵션에 대해 자세히 알아보려면 데이터 유형 을 참조하세요.

      • Enable Dynamic Mapping - 문서embeddedDocument 유형의 필드에 사용할 정적 또는 동적 매핑. 동적 매핑을 비활성화하면 필드의 데이터가 자동으로 인덱싱되지 않습니다.

    3. 필드를 추가하려면 Add을 클릭합니다.

      선택적으로 Actions 열에 있는 필드의 줄임표 (...) 아이콘을 클릭하여 다음을 수행할 수 있습니다.

      • 0}을 클릭하여 필드에 대한 설정을 Edit 수정합니다.

      • 0}을 클릭하여 필드에 대한 추가 데이터 유형을 Add Data Type 구성합니다.

      • Delete 을(를) 클릭하여 색인에서 필드를 제거합니다.

    Atlas Search 인덱스 정의의 필드를 어떤 순서로든 정의할 수 있습니다.

    mappings.fields JSON 설정에 해당합니다.

    조건부

    Stored Source Fields

    Atlas Search에 저장할 필드를 지정합니다. 다음 중 하나를 선택할 수 있습니다.

    • None - (기본값) 이 옵션을 선택하면 Atlas Search는 어떤 필드도 저장하지 않습니다.

    • All - 이 옵션을 선택하면 Atlas Search가 문서의 모든 필드를 저장합니다.

    • Specified - 선택하면 Atlas Search는 _id 및 사용자가 지정한 필드를 저장합니다. 다음을 수행하여 필드를 지정할 수 있습니다.

      1. Field Name 열의 드롭다운에서 Atlas Search에 저장할 필드를 선택합니다.

      2. 저장할 필드 목록에 필드를 추가하려면 Add을 클릭합니다.

      3. Add Field을 클릭하고 목록에 추가할 각 필드에 대해 a, b 단계를 반복합니다.

      4. (선택 사항) 다음 중 하나를 클릭합니다.

        • Edit 다른 필드를 선택합니다.

        • Delete 저장할 필드 목록에서 필드를 제거합니다.

    • All Except Specified - 이 옵션을 선택하면 Atlas Search에서 특정 필드를 Atlas Search의 저장소에서 제외합니다.

      1. Field Name열의 드롭다운에서 제외할 필드를 선택합니다.

      2. 제외할 필드 목록에 필드를 추가하려면 Add을 클릭합니다.

      3. Add Field을 클릭하고 목록에서 제외할 각 필드에 대해 a, b 단계를 반복합니다.

      4. (선택 사항) 다음 중 하나를 클릭합니다.

        • Edit 다른 필드를 선택합니다.

        • Delete 제외할 필드 목록에서 필드를 제거합니다.

    필드 저장에 관한 자세한 사항은 Atlas 검색 인덱스에서 저장된 소스 필드 정의를 참조하십시오.

    storedSource JSON 설정에 해당합니다.

    옵션

    Synonyms Mappings

    인덱스에 사용할 동의어 매핑을 지정합니다. 자세한 사항은 Atlas Search 인덱스에서 동의어 매핑 정의를 참조하십시오.

    동의어 매핑을 추가하려면 각 동의어에 대해 다음 설정을 지정해야 합니다.

    • Synonym mapping name - 쿼리 시 참조할 동의어 매핑을 식별하는 레이블입니다. 고유한 값을 지정해야 합니다. 빈 문자열 값은 지정할 수 없습니다.

    • Synonym source collection - Atlas Search 인덱스와 동일한 데이터베이스에서 MongoDB 컬렉션을 식별하는 레이블입니다. 이 컬렉션의 문서는 동의어 소스 컬렉션 문서에 설명된 형식을 사용합니다. 빈 컬렉션을 추가하거나 샘플 컬렉션을 로드할 수도 있습니다.

    • Analyzer - 이 동의어 매핑에 사용할 분석기를 식별하는 레이블입니다.

      동의어 매핑을 사용하여 동일한 분석기로 분석된 필드만 쿼리할 수 있습니다. 기본적으로 Atlas Search은 표준 분석기("lucene.standard")를 사용합니다.

      다음을 제외한 모든 Atlas Search 분석기를 지정할 수 있습니다.

    synonyms JSON 설정에 해당합니다.

    선택 사항.

    Index Partitions

    필드 객체가 2.1 십억을 초과하는 경우 사용할 파티션 수입니다.

    numPartitions JSON 설정에 해당합니다.

    중요

    옵션은 numPartitions 미리보기 기능 으로 사용할 수 있습니다.

    선택 사항.

  2. Save Changes를 클릭합니다.

Atlas Search JSON Editor를 사용하는 경우 다음을 수행합니다.

  1. 인덱스에 다음 설정 중 하나를 추가합니다.

    필드 이름
    설명
    필요성

    mappings.fields

    mappings.dynamicfalse인 경우 필요합니다.

    자신만의 필드 매핑을 정의하는 것은 고급 사용자에게만 권장됩니다.

    인덱싱할 필드를 지정합니다. 자세한 내용은 필드 매핑 정의를 참조하세요.

    Atlas Search 인덱스 정의의 필드를 어떤 순서로든 정의할 수 있습니다.

    조건부

    storedSource

    Atlas Search에 저장할 문서의 필드를 지정하세요. 값은 다음 중 하나일 수 있습니다.

    • true, 모든 필드를 저장하려는 경우

    • false, 어떤 필드도 저장하지 않으려는 경우

    • 스토리지에서 include 또는 exclude으로 필드를 지정하는 객체입니다.

    생략하는 경우 기본값은 false입니다.

    storedSource 은 다음 버전 중 하나를 실행하는 Atlas 클러스터에서만 사용할 수 있습니다.

    • MongoDB 5.0.6+

    • MongoDB 6.0+

    • MongoDB 7.0+

    Atlas Search에서는 지원되는 모든 데이터 유형의 필드를 저장할 수 있습니다. 구문 및 필드에 관한 자세한 내용은 Atlas 검색 인덱스에서 저장된 소스 필드 정의를 참조하세요.

    옵션

    synonyms

    인덱스에 사용할 동의어 매핑을 지정합니다. 자세한 사항은 Atlas Search 인덱스에서 동의어 매핑 정의를 참조하십시오.

    동의어 매핑을 사용하여 동일한 분석기로 분석된 필드만 쿼리할 수 있습니다. 기본적으로 Atlas Search은 표준 분석기("lucene.standard")를 사용합니다.

    옵션

    numPartitions

    필드 객체가 2.1 십억을 초과하는 경우 사용할 파티션 수입니다. .. include:: /includes/fact-numpartitions-preview.rst

    선택 사항.

    인덱스 정의 설정을 자세히 알아보려면 Atlas 검색 인덱스 구문 검토를 참조하세요.

  2. Next를 클릭합니다.

8

참고

Visual Editor를 사용하고 인덱스 정의에 정적 매핑이 포함된 경우 인덱스 정의를 초안으로 저장할 수 있습니다. 기본 인덱스 정의는 초안으로 저장할 수 없습니다. 사용자 지정 인덱스 정의만 초안으로 저장할 수 있습니다.

  1. Cancel를 클릭합니다.

  2. Save Draft 또는 Delete Draft를 클릭합니다.

    중요

    보류 중인 인덱스 초안이 있는 경우 새 인덱스를 만들 수 없습니다.

    인덱스 초안을 사용하여 인덱스를 만드는 방법에 대해 자세히 알아보려면 Atlas Search 인덱스 초안 재개 또는 삭제를 참조하세요.

9

Atlas에서 인덱스가 작성 중임을 알려주는 모달 창이 표시됩니다.

10
11

새로 생성된 인덱스가 Atlas Search 탭에 나타납니다. 인덱스가 빌드되는 동안 Status 필드는 Build in Progress를 읽습니다. 인덱스 빌드가 완료되면 Status 필드에 Active가 표시됩니다.

참고

컬렉션이 클수록 인덱스를 생성하는 데 시간이 더 오래 걸립니다. 인덱스 빌드가 완료되면 이메일 알림을 받게 됩니다.

다양한 복잡성의 Atlas Search 인덱스를 생성하는 방법을 보여주는 이 비디오 튜토리얼을 따라해 보세요.

지속 시간 소요 시간: 15분

mongosh를 통해 Atlas Search 인덱스를 생성하려면 다음을 수행합니다.

1

자세한 내용은 mongosh를 통한 연결을 참조하세요.

2

db.collection.createSearchIndex() 메서드를 사용합니다.

명령은 다음과 같은 구문을 가집니다. 인덱스 이름을 생략하는 경우 Atlas Search는 인덱스 이름을 default으로 지정합니다. 자세한 사항은 Atlas 검색 인덱스 구문 검토를 참조하십시오.

db.<collection>.createSearchIndex(
"<index-name>",
{
/* search index definition */
}
)

예시

movies 컬렉션의 필드를 동적으로 인덱싱하는 example-index라는 인덱스를 생성하려면 다음 명령을 실행하세요.

db.movies.createSearchIndex(
"example-index",
{ mappings: { dynamic: true } }
)
example-index
1

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

2

Database 화면에서 데이터베이스 이름을 클릭한 다음 컬렉션 이름을 클릭합니다.

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

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

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

    인덱스 이름

    default

    인덱스 정의

    {
    mappings: { dynamic: true }
    }
  4. Create Search Index를 클릭합니다.

Atlas Search 인덱스를 생성하기 위해 C 드라이버를 사용하려면 애플리케이션 내에서 검색 인덱스를 정의하고 mongoc_collection_command_simple() 메서드를 호출하세요.

참고

Atlas Search 인덱스 관리 방법은 비동기적으로 실행됩니다. 드라이버 메서드는 성공적으로 실행되었는지 확인하기 전에 반환될 수 있습니다. 검색 인덱스의 현재 상태를 확인하려면 $listSearchIndexes 파이프라인 단계와 함께 집계 작업을 실행합니다.

1
2

다음 샘플 응용 프로그램에서는 createSearchIndexes 명령을 지정하여 컬렉션의 필드를 동적으로 인덱싱하는 검색 인덱스를 정의합니다. 그런 다음 애플리케이션은 명령 및 검색 인덱스 정보를 BSON으로 변환하고 이 정보를 mongoc_collection_command_simple() 메서드에 전달하여 검색 인덱스를 생성합니다. 자세한 사항은 Atlas 검색 인덱스 구문 검토를 참조하세요.

#include <mongoc/mongoc.h>
#include <stdlib.h>
int main (void)
{
mongoc_client_t *client = NULL;
mongoc_collection_t *collection = NULL;
mongoc_database_t *database = NULL;
bson_error_t error;
bson_t cmd = BSON_INITIALIZER;
bool ok = true;
mongoc_init();
// Connect to your Atlas deployment
client = mongoc_client_new("<connectionString>");
if (!client) {
fprintf(stderr, "Failed to create a MongoDB client.\n");
ok = false;
goto cleanup;
}
// Access your database and collection
database = mongoc_client_get_database(client, "<databaseName>");
collection = mongoc_database_get_collection(database, "<collectionName>");
// Specify the command and the new index
const char *cmd_str = BSON_STR({
"createSearchIndexes" : "<collectionName>",
"indexes" : [ {
"definition" : {"mappings" : {"dynamic" : true}},
"name" : "<indexName>"
} ]
});
// Convert your command to BSON
if (!bson_init_from_json(&cmd, cmd_str, -1, &error)) {
fprintf(stderr, "Failed to parse command: %s\n", error.message);
ok = false;
goto cleanup;
}
// Create the Atlas search index by running the command
if (!mongoc_collection_command_simple (collection, &cmd, NULL, NULL, &error)) {
fprintf(stderr, "Failed to run createSearchIndexes: %s\n", error.message);
ok = false;
goto cleanup;
}
printf ("Index created!\n");
cleanup:
mongoc_collection_destroy (collection);
mongoc_client_destroy (client);
mongoc_database_destroy (database);
bson_destroy (&cmd);
mongoc_cleanup ();
return ok ? EXIT_SUCCESS : EXIT_FAILURE;
}

한 번에 여러 개의 Atlas Search 인덱스를 만들 수도 있습니다. 다음 예시에서는 indexes 배열 내에서 문서로 만들려는 각 검색 인덱스를 정의합니다. 그런 다음 명령과 검색 인덱스 정보를 BSON으로 변환하고 mongoc_collection_command_simple() 메서드를 호출하여 검색 인덱스를 만듭니다.

#include <mongoc/mongoc.h>
#include <stdlib.h>
int main (void)
{
mongoc_client_t *client = NULL;
mongoc_collection_t *collection = NULL;
mongoc_database_t *database = NULL;
bson_error_t error;
bson_t cmd = BSON_INITIALIZER;
bool ok = true;
mongoc_init();
// Connect to your Atlas deployment
client = mongoc_client_new("<connectionString>");
if (!client) {
fprintf(stderr, "Failed to create a MongoDB client.\n");
ok = false;
goto cleanup;
}
// Access your database and collection
database = mongoc_client_get_database(client, "<databaseName>");
collection = mongoc_database_get_collection(database, "<collectionName>");
// Specify the command and the new indexes
const char *cmd_str = BSON_STR({
"createSearchIndexes" : "<collectionName>",
"indexes" : [{
// Add your search index definition fields here
"name" : "<firstIndexName>"
},
{
// Add your search index definition fields here
"name" : "<secondIndexName>"
}]
});
// Convert your command to BSON
if (!bson_init_from_json(&cmd, cmd_str, -1, &error)) {
fprintf(stderr, "Failed to parse command: %s\n", error.message);
ok = false;
goto cleanup;
}
// Create the Atlas search indexes by running the command
if (!mongoc_collection_command_simple (collection, &cmd, NULL, NULL, &error)) {
fprintf(stderr, "Failed to run createSearchIndexes: %s\n", error.message);
ok = false;
goto cleanup;
}
printf ("Indexes created!\n");
cleanup:
mongoc_collection_destroy (collection);
mongoc_client_destroy (client);
mongoc_database_destroy (database);
bson_destroy (&cmd);
mongoc_cleanup ();
return ok ? EXIT_SUCCESS : EXIT_FAILURE;
}
3
  • Atlas 연결 문자열입니다. 자세한 사항은 드라이버를 통해 연결을 참조하십시오.

  • 인덱스를 작성하려는 데이터베이스 및 컬렉션입니다.

  • 인덱스의 이름입니다. 인덱스 이름을 생략하는 경우 Atlas Search는 인덱스 이름을 default으로 지정합니다.

4
gcc -o create-index create-index.c $(pkg-config --libs --cflags libmongoc-1.0)
./create-index

Atlas Search 인덱스를 생성하기 위해 C++ 드라이버를 사용하려면 애플리케이션 내에서 검색 인덱스를 정의하고 create_one() 메서드를 호출하세요.

참고

Atlas 검색 인덱스 관리 방법은 비동기적으로 실행됩니다. 드라이버 메서드는 성공적으로 실행되었는지 확인하기 전에 반환될 수 있습니다. 검색 인덱스의 현재 상태를 확인하려면 검색 인덱스 뷰 인스턴스에서 list() 메서드를 호출하세요.

1
2

다음 샘플 애플리케이션은 컬렉션의 필드를 동적으로 인덱싱하기 위해 검색 인덱스 이름과 정의를 search_index_model() 메서드에 전달합니다. 그런 다음 애플리케이션은 검색 인덱스를 만들기 위해 검색 인덱스 사양을 create_one() 메서드에 전달합니다. 자세한 내용은 Atlas Search 인덱스 구문 검토를 참조하세요.

#include <bsoncxx/builder/basic/document.hpp>
#include <bsoncxx/builder/basic/kvp.hpp>
#include <mongocxx/client.hpp>
#include <mongocxx/instance.hpp>
#include <mongocxx/search_index_view.hpp>
using bsoncxx::builder::basic::kvp;
using bsoncxx::builder::basic::make_document;
using namespace mongocxx;
int main()
{
try
{
// Connect to your Atlas deployment
mongocxx::instance instance{};
mongocxx::uri uri("<connectionString>");
mongocxx::client client(uri);
// Access your database and collection
auto db = client["<databaseName>"];
auto collection = db["<collectionName>"];
// Create an index model with your index name and definition
auto siv = collection.search_indexes();
auto name = "<indexName>";
auto definition = make_document(kvp("mappings", make_document(kvp("dynamic", true))));
auto model = search_index_model(name, definition.view());
// Create the search index
siv.create_one(model);
std::cout << "Index created!" << std::endl;
}
catch (const std::exception& e)
{
std::cout<< "Exception: " << e.what() << std::endl;
}
return 0;
}

한 번에 여러 개의 Atlas Search 인덱스를 만들 수도 있습니다. 만들려는 각 검색 인덱스에 대해 검색 인덱스 사양을 search_index_model() 메서드에 전달합니다. 그런 다음 각 검색 인덱스를 벡터에 추가하고 벡터를 create_many() 메서드에 전달하여 검색 인덱스를 생성합니다.

#include <bsoncxx/builder/basic/document.hpp>
#include <bsoncxx/builder/basic/kvp.hpp>
#include <mongocxx/client.hpp>
#include <mongocxx/instance.hpp>
#include <mongocxx/search_index_view.hpp>
using bsoncxx::builder::basic::kvp;
using bsoncxx::builder::basic::make_document;
using namespace mongocxx;
int main()
{
try
{
// Connect to your Atlas deployment
mongocxx::instance instance{};
mongocxx::uri uri("<connectionString>");
mongocxx::client client(uri);
// Access your database and collection
auto db = client["<databaseName>"];
auto collection = db["<collectionName>"];
// Create index models and add them to a vector
auto siv = collection.search_indexes();
std::vector<search_index_model> models;
auto name1 = "<firstIndexName>";
auto definition1 = make_document(/* Add search index definition fields here */);
auto model1 = search_index_model(name1, definition1.view());
models.push_back(model1);
auto name2 = "<secondIndexName>";
auto definition2 = make_document(/* Add search index definition fields here */);
auto model2 = search_index_model(name2, definition2.view());
models.push_back(model2);
// Create the search indexes
siv.create_many(models);
std::cout << "Indexes created!" << std::endl;
}
catch (const std::exception& e)
{
std::cout<< "Exception: " << e.what() << std::endl;
}
return 0;
}
3
  • Atlas 연결 문자열입니다. 자세한 사항은 드라이버를 통해 연결을 참조하십시오.

  • 인덱스를 작성하려는 데이터베이스 및 컬렉션입니다.

  • 인덱스의 이름입니다. 인덱스 이름을 생략하는 경우 Atlas Search는 인덱스 이름을 default으로 지정합니다.

4
g++ -o create-index create-index.cpp $(pkg-config --cflags --libs libmongocxx)
./create-index

.NET/C# 드라이버로 Atlas Search 인덱스를 생성하려면 다음을 수행합니다.

  1. 인덱스를 정의하는 BsonDocument를 생성합니다.

  2. BsonDocumentCreateOne() 또는 CreateOneAsync() 메서드에 전달하세요.

다음 샘플 애플리케이션은 컬렉션의 필드를 동적으로 인덱싱하는 검색 인덱스를 정의한 다음 CreateOne() 메서드를 실행하여 인덱스를 만듭니다. 자세한 사항은 Atlas 검색 인덱스 구문 검토를 참조하세요.

1
  1. 다음 명령을 실행하여 csharp-create-index라는 새 디렉토리를 생성합니다.

    mkdir csharp-create-index
  2. 다음 명령을 실행하여 새 디렉토리로 변경합니다.

    cd csharp-create-index
  3. 다음 명령을 실행하여 프로젝트를 초기화합니다.

    dotnet new console
2

다음 명령을 실행합니다:

dotnet add package MongoDB.Driver
3

다음 예제에서 자리 표시자 값을 변경합니다.

설명

<connection-string>

Atlas 연결 문자열입니다. 자세한 사항은 드라이버를 통해 연결을 참조하십시오.

<databaseName>

인덱스를 생성하려는 데이터베이스입니다.

<collectionName>

인덱스를 생성하려는 컬렉션입니다.

<IndexName>

인덱스의 이름입니다. 인덱스 이름을 생략하는 경우 Atlas Search는 인덱스 이름을 default으로 지정합니다.

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("<databaseName>");
var collection = db.GetCollection<BsonDocument>("<collectionName>");
// define your Atlas Search index
var index = new BsonDocument
{
{ "mappings", new BsonDocument
{
{ "dynamic", true }
}
}
};
var result = collection.SearchIndexes.CreateOne(index, "<indexName>");
Console.WriteLine(result);
4

다음 명령을 사용하여 프로젝트를 실행합니다.

dotnet run csharp-create-index.csproj
default

한 번에 여러 개의 Atlas Search 인덱스를 만들려면 다음을 수행하세요.

  1. 검색 인덱스 정의를 포함하는 IEnumerable<CreateSearchIndexModel>의 인스턴스를 구성합니다.

  2. 컬렉션을 CreateMany() 또는 CreateManyAsync() 메서드에 전달합니다.

다음 예시에서는 CreateMany() 메서드를 사용하여 여러 인덱스를 만드는 방법을 보여 줍니다.

1
  1. 다음 명령을 실행하여 csharp-create-index라는 새 디렉토리를 생성합니다.

    mkdir csharp-create-index-mult
  2. 다음 명령을 실행하여 새 디렉토리로 변경합니다.

    cd csharp-create-index-mult
  3. 다음 명령을 실행하여 프로젝트를 초기화합니다.

    dotnet new console
2

다음 명령을 실행합니다:

dotnet add package MongoDB.Driver
3

다음 예제에서 자리 표시자 값을 변경합니다.

설명

<connection-string>

Atlas 연결 문자열입니다. 자세한 사항은 드라이버를 통해 연결을 참조하십시오.

<databaseName>

인덱스를 생성하려는 데이터베이스입니다.

<collectionName>

인덱스를 생성하려는 컬렉션입니다.

<first-index-name>

첫 번째 인덱스의 이름입니다.

<last-index-name>

마지막 인덱스의 이름입니다.

using MongoDB.Bson;
using MongoDB.Driver;
// connect to your Atlas deployment
var uri = "<connection-string>";
var client = new MongoClient(uri);
var db = client.GetDatabase("<databaseName>");
var collection = db.GetCollection<BsonDocument>("<collectionName>");
// define your Atlas Search indexes
var indexes = new List<CreateSearchIndexModel>
{
new CreateSearchIndexModel(
"<first-index-name>",
new BsonDocument
{
// search index definition fields
}
),
...
new CreateSearchIndexModel(
"<last-index-name>",
new BsonDocument
{
// search index definition fields
}
)
};
var result = collection.SearchIndexes.CreateMany(indexes);
4

다음 명령을 사용하여 프로젝트를 실행합니다.

dotnet run csharp-create-index-mult.csproj
default

API 문서

이 페이지의 메서드에 대한 자세한 내용은 .NET/C# 드라이버의 API 설명서를 참조하세요.

Java 드라이버를 사용하여 Atlas Search 인덱스를 생성하려면 검색 인덱스를 정의하는 문서를 구성한 다음 createSearchIndex() 또는 createSearchIndexes() 메서드에 문서를 전달합니다. 자세한 내용은 드라이버 설명서를 참조하세요.

참고

Atlas 검색 인덱스 관리 방법은 비동기적으로 실행됩니다. 드라이버 메서드는 성공적으로 실행되었는지 확인하기 전에 반환될 수 있습니다. 인덱스의 현재 상태를 확인하려면 listSearchIndexes() 메서드를 호출합니다.

1
2

다음 샘플 애플리케이션은 컬렉션의 필드를 동적으로 인덱싱하는 검색 인덱스를 정의한 후 createSearchIndex() 메서드를 실행하여 인덱스를 생성합니다. 자세한 내용은 Atlas 검색 인덱스 구문 검토를 참조하세요.

import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
public class CreateIndex {
public static void main(String[] args) {
// connect to your Atlas cluster
String uri = "<connection-string>";
try (MongoClient mongoClient = MongoClients.create(uri)) {
// set namespace
MongoDatabase database = mongoClient.getDatabase("<databaseName>");
MongoCollection<Document> collection = database.getCollection("<collectionName>");
Document index = new Document("mappings",
new Document("dynamic", true));
collection.createSearchIndex("<index-name>", index);
}
}
}

다음 샘플 애플리케이션을 사용하여 여러 Atlas Search 인덱스를 한 번에 생성할 수 있습니다. 이를 위해 생성하려는 각 검색 인덱스에 대한 문서를 작성한 후 해당 문서들을 배열로 createSearchIndexes() 메서드에 전달하세요.

import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.SearchIndexModel;
import org.bson.Document;
import java.util.Arrays;
public class CreateIndex {
public static void main(String[] args) {
// connect to your Atlas cluster
String uri = "<connection-string>";
try (MongoClient mongoClient = MongoClients.create(uri)) {
// set namespace
MongoDatabase database = mongoClient.getDatabase("<databaseName>");
MongoCollection<Document> collection = database.getCollection("<collectionName>");
SearchIndexModel indexOne = new SearchIndexModel("<first-index-name>",
new Document(
// search index definition fields
));
SearchIndexModel indexTwo = new SearchIndexModel("<second-index-name>",
new Document(
// search index definition fields
));
collection.createSearchIndexes(Arrays.asList(indexOne, indexTwo));
}
}
}
3
  • Atlas 연결 문자열입니다. 자세한 사항은 드라이버를 통해 연결을 참조하십시오.

  • 인덱스를 작성하려는 데이터베이스 및 컬렉션입니다.

  • 인덱스의 이름입니다. 인덱스 이름을 생략하는 경우 Atlas Search는 인덱스 이름을 default로 지정합니다.

4
javac CreateIndex.java
java CreateIndex

노드 드라이버를 통해 Atlas Search 인덱스를 생성하려면 다음을 수행하세요.

  1. 애플리케이션에서 검색 인덱스를 정의합니다.

  2. createSearchIndex 또는 createSearchIndexes 헬퍼 메서드를 실행합니다.

create-index.js이라는 이름의 다음 샘플 애플리케이션은 컬렉션의 필드를 동적으로 인덱싱하는 검색 인덱스를 정의한 다음 createSearchIndex 명령을 실행하여 인덱스를 생성합니다. 자세한 사항은 Atlas 검색 인덱스 구문 검토를 참조하십시오.

1
2

다음 예제에서 자리 표시자 값을 변경합니다.

설명

<connection-string>

Atlas 연결 문자열입니다. 자세한 사항은 드라이버를 통해 연결을 참조하십시오.

<databaseName>

인덱스를 생성하려는 데이터베이스입니다.

<collectionName>

인덱스를 생성하려는 컬렉션입니다.

<index-name>

인덱스의 이름입니다. 인덱스 이름을 생략하면 Atlas Search에서 인덱스 이름을 default 으로 지정합니다.

create-index.js
import { MongoClient } from "mongodb";
// connect to your Atlas deployment
const uri = "<connection-string>";
const client = new MongoClient(uri);
async function run() {
try {
const database = client.db("<databaseName>");
const collection = database.collection("<collectionName>");
// define your Atlas Search index
const index = {
name: "<index-name>",
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

다음 명령을 사용하세요.

node create-index.js
<index-name>

한 번에 여러 개의 Atlas Search 인덱스를 만들려면 다음을 수행하세요.

  1. 애플리케이션에서 검색 인덱스의 배열을 정의합니다.

  2. 배열을 createSearchIndexes 명령으로 전달합니다.

다음 예제에서는 createSearchIndexes 명령을 사용하여 여러 인덱스를 만드는 방법을 보여줍니다.

1
2

다음 예제에서 자리 표시자 값을 변경합니다.

설명

<connection-string>

Atlas 연결 문자열입니다. 자세한 사항은 드라이버를 통해 연결을 참조하십시오.

<databaseName>

인덱스를 생성하려는 데이터베이스입니다.

<collectionName>

인덱스를 생성하려는 컬렉션입니다.

<first-index-name>

첫 번째 인덱스의 이름입니다.

<last-index-name>

마지막 인덱스의 이름입니다.

import { MongoClient } from "mongodb";
// connect to your Atlas deployment
const uri = "<connection-string>";
const client = new MongoClient(uri);
async function run() {
try {
const database = client.db("<databaseName>");
const collection = database.collection("<collectionName>");
// define an array of Atlas Search indexes
const indexes = [
{
name: "<first-index-name>",
definition: {
/* search index definition fields */
}
},
...
{
name: "<last-index-name>",
definition: {
/* search index definition fields */
}
}
]
// run the helper method
const result = await collection.createSearchIndexes(indexes);
console.log(result);
} finally {
await client.close();
}
}
run().catch(console.dir);
3

다음 명령을 사용하세요.

node create-index-mult.js
<index-name>

Python 드라이버를 사용하여 Atlas Search 인덱스를 생성하려면, 애플리케이션에서 검색 인덱스를 정의하고 create_search_index() 메소드를 호출하세요.

참고

Atlas 검색 인덱스 관리 방법은 비동기적으로 실행됩니다. 드라이버 메서드는 성공적으로 실행되었는지 확인하기 전에 반환될 수 있습니다. 검색 인덱스의 현재 상태를 확인하려면 컬렉션에서 list_search_indexes() 메서드를 호출하세요.

1
2

다음 샘플 애플리케이션은 컬렉션의 필드를 동적으로 인덱싱하기 위해 검색 인덱스를 정의합니다. 그런 다음 애플리케이션은 컬렉션에서 create_search_index() 메소드를 호출하여 검색 인덱스를 생성합니다. 자세한 내용은 Atlas Search 인덱스 구문 검토를 참조하세요.

from pymongo.mongo_client import MongoClient
from pymongo.operations import SearchIndexModel
def create_index():
# Connect to your Atlas deployment
uri = "<connectionString>"
client = MongoClient(uri)
# Access your database and collection
database = client["<databaseName>"]
collection = database["<collectionName>"]
# Create your index model, then create the search index
search_index_model = SearchIndexModel(
definition={
"mappings": {
"dynamic": True
},
},
name="<indexName>",
)
result = collection.create_search_index(model=search_index_model)
print(result)

한 번에 여러 개의 Atlas Search 인덱스를 생성할 수도 있습니다. 애플리케이션 에서 검색 인덱스 배열 을 정의합니다. 그런 다음 배열을 create_search_indexes() 메서드에 매개변수로 전달합니다.

from pymongo.mongo_client import MongoClient
from pymongo.operations import SearchIndexModel
def create_indexes():
# Connect to your Atlas deployment
uri = "<connectionString>"
client = MongoClient(uri)
# Access your database and collection
database = client["<databaseName>"]
collection = database["<collectionName>"]
# Create your index models and add them to an array
first_model = SearchIndexModel(
definition={
# Add search index definition fields here
},
name="<firstIndexName>",
)
second_model = SearchIndexModel(
definition={
# Add search index definition fields here
},
name="<secondIndexName>",
)
idx_models = [first_model, second_model]
# Create the search indexes
result = collection.create_search_indexes(models=idx_models)
print(result)
3
  • Atlas 연결 문자열입니다. 자세한 사항은 드라이버를 통해 연결을 참조하십시오.

  • 인덱스를 작성하려는 데이터베이스 및 컬렉션입니다.

  • 인덱스의 이름입니다. 인덱스 이름을 생략하는 경우 Atlas Search는 인덱스 이름을 default으로 지정합니다.

4
python create-index.py

Atlas Search 인덱스를 생성하면 Atlas Search 페이지에 Atlas Search 인덱스에 대한 정보가 표시됩니다. Status 열은 클러스터의 프라이머리 노드에 있는 인덱스의 현재 상태를 표시합니다. 자세한 내용은 인덱스 상태 검토를 참조하세요.

경고

이미 Atlas Search 인덱스가 있는 컬렉션을 샤드하는 경우, 컬렉션이 샤드에 표시되기 시작할 때 잠시 동안 쿼리 중단 시간이 발생할 수 있습니다. 또한 이미 샤드된 컬렉션에 대한 샤드를 추가하고 Atlas Search 인덱스가 포함된 경우, 추가된 샤드에서 초기 동기화 프로세스가 완료될 때까지 해당 컬렉션에 대한 검색 쿼리가 실패합니다. 자세한 내용은 초기 동기화 프로세스를 참조하세요.

돌아가기

색인 생성 및 관리