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 인덱스를 만들 수 있습니다.
중요
전제 조건
Atlas Search 인덱스를 만들려면 다음이 포함된 Atlas 클러스터가 있어야 합니다:
모든 클러스터 계층에서 MongoDB 버전
4.2
이상.Atlas Search 인덱스를 생성할 컬렉션입니다.
필요한 액세스 권한
다음 표는 각 역할이 지원하는 액세스 모드를 보여줍니다.
역할 | 작업 | Atlas UI | Atlas API | Atlas Search API | Atlas CLI |
---|---|---|---|---|---|
Atlas Search 분석기 및 인덱스를 보려면 다음 단계를 따르세요. | ✓ | ✓ | |||
| 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 합니다.
인덱스 크기 추정
컬렉션의 하위 집합에 인덱스를 생성하여 인덱스의 크기를 추정할 수 있습니다.
데이터 샘플을 가져와서 샘플 데이터로 새 컬렉션을 생성합니다.
샘플 데이터를 사용하여 컬렉션에 검색 인덱스를 생성합니다.
참고
샘플 데이터의 인덱스 정의는 전체 컬렉션에서 생성하려는 인덱스 정의와 동일해야 합니다.
데이터의 총 크기에 따라 샘플 데이터 인덱스의 크기를 조정합니다.
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 Search 인덱스 만들기
Atlas UI, MongoDB Compass를 사용하거나 mongosh
, Atlas CLI, API 또는 원하는 언어로 지원되는 MongoDB 드라이버를 사용하여 프로그래밍 방식으로 Atlas Search 인덱스를 만들 수 있습니다.
참고
Atlas Search 인덱스는 컬렉션의 일부가 아닌 전체 컬렉션에 적용되어야 합니다.
➤ 언어 선택 드롭다운 메뉴를 사용하여 이 섹션에 있는 예시의 언어를 설정합니다.
Atlas Search 인덱스를 만들려면 다음을 수행하세요.
POST
요청을 보냅니다.
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" } } ] } }'
이 엔드포인트의 구문 및 매개변수에 대해 자세히 알아보려면 엔드포인트 생성하기를 참조하세요.
Atlas CLI를 사용하여 만든 로컬 Atlas 배포와 함께 Atlas Search를 사용할 수도 있습니다. 자세한 내용은 로컬 Atlas 배포 만들기를 참조하세요.
클라우드 배포를 위한 Atlas Search 인덱스 만들기
Atlas CLI를 사용하여 클러스터에 대한 검색 인덱스를 생성하려면 다음 명령을 실행하세요.
atlas clusters search indexes create [indexName] [options]
명령 구문 및 매개변수에 대한 자세한 내용은 Atlas CLI 문서에서 Atlas 클러스터 검색 인덱스 만들기를 참조하십시오.
로컬 배포를 위한 Atlas Search 인덱스 만들기
Atlas CLI를 사용하여 지정된 배포에 대한 검색 인덱스를 생성하려면 다음 명령을 실행하세요.
atlas deployments search indexes create [indexName] [options]
명령 구문 및 매개변수에 대해 자세히 알아보려면 검색 인덱스가 생성하는 Atlas 배포에 대한 Atlas CLI 설명서를 참조하세요.
예시
다음 예시는 구성 파일을 사용하여 비대화식 모드에서 atlas clusters
또는 atlas deployments
명령어를 사용하여 Atlas Search 인덱스를 생성하는 방법을 보여줍니다.
$search
쿼리의 경우 기본 search
유형의 인덱스를 생성합니다.
절차
Atlas UI에서 Atlas Search 인덱스를 만들려면 다음과 같이 하세요:
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 섹션에서 데이터베이스 를 확장하고 인덱스 를 생성할 컬렉션 이름을 선택합니다.
Visual Editor 를 사용하는 경우Next를 클릭합니다.
Index Configurations 섹션에서 기본 Atlas Search 인덱스 구성 설정을 검토합니다.
기본 인덱스 정의를 사용하거나 사용자 지정 인덱스 정의를 지정할 수 있습니다.
기본 인덱스 정의는 문서의 필드를 동적으로 매핑한 것이며 모든 컬렉션에서 작동합니다.
사용자 지정 인덱스 정의는 정적 매핑입니다. 인덱싱할 필드, 분석기, 데이터 유형을 지정합니다.
필드 이름 | 설명 | 필요성 |
---|---|---|
Index Analyzer | 옵션 | |
Query Analyzer | 옵션 | |
Dynamic Mapping | 필드의 동적 또는 정적 매핑을 지정합니다. 동적 매핑을 사용하지 않으려면
| 필수 사항 |
필드 이름 | 설명 | 필요성 |
---|---|---|
| 옵션 | |
| 옵션 | |
| 필드의 동적 또는 정적 매핑을 지정합니다. 동적 매핑을 사용하지 않으려면 | 필수 사항 |
인덱스 정의 설정을 자세히 알아보려면 Atlas 검색 인덱스 구문 검토를 참조하세요.
기본 구성에 만족하는 경우 건너뜁니다. Atlas Search 인덱스를 세분화하려면 다음 단계로 진행하세요.
추가 설정을 구성하려면 Atlas Search 인덱스를 구체화하세요.
0}을 사용하는 경우 Visual Editor
다음 설정을 변경하려면 Refine Your Index을 클릭합니다.
필드 이름설명필요성Field Mappings
1}Dynamic Mapping Index Configurations 섹션의 이 비활성화된 경우 필수입니다.
자신만의 필드 매핑을 정의하는 것은 고급 사용자에게만 권장됩니다.
인덱싱할 필드를 지정합니다. 필드를 추가하려면 다음을 수행해야 합니다.
Add Field 을 클릭하여 Add Field Mapping 창을 엽니다.
필드에 대해 다음 정보를 지정합니다.
Field name - 인덱싱할 필드의 이름입니다.
Data Type Configuration - 필드 데이터 유형입니다. 지원되는 데이터 유형과 해당 옵션에 대해 자세히 알아보려면 데이터 유형 을 참조하세요.
Enable Dynamic Mapping - 문서 및 embeddedDocument 유형의 필드에 사용할 정적 또는 동적 매핑. 동적 매핑을 비활성화하면 필드의 데이터가 자동으로 인덱싱되지 않습니다.
필드를 추가하려면 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
및 사용자가 지정한 필드를 저장합니다. 다음을 수행하여 필드를 지정할 수 있습니다.Field Name 열의 드롭다운에서 Atlas Search에 저장할 필드를 선택합니다.
저장할 필드 목록에 필드를 추가하려면 Add을 클릭합니다.
Add Field을 클릭하고 목록에 추가할 각 필드에 대해 a, b 단계를 반복합니다.
(선택 사항) 다음 중 하나를 클릭합니다.
Edit 다른 필드를 선택합니다.
Delete 저장할 필드 목록에서 필드를 제거합니다.
All Except Specified - 이 옵션을 선택하면 Atlas Search에서 특정 필드를 Atlas Search의 저장소에서 제외합니다.
Field Name열의 드롭다운에서 제외할 필드를 선택합니다.
제외할 필드 목록에 필드를 추가하려면 Add을 클릭합니다.
Add Field을 클릭하고 목록에서 제외할 각 필드에 대해 a, b 단계를 반복합니다.
(선택 사항) 다음 중 하나를 클릭합니다.
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 분석기를 지정할 수 있습니다.
lucene.kuromoji
lucene.cjk
daitchMokotoffSoundex 토큰 필터
nGram 토큰 필터
edgeGram 토큰 필터
shingle 토큰 필터
synonyms
JSON 설정에 해당합니다.선택 사항.
Index Partitions
필드 객체가 2.1 십억을 초과하는 경우 사용할 파티션 수입니다.
numPartitions
JSON 설정에 해당합니다.중요
옵션은
numPartitions
미리보기 기능 으로 사용할 수 있습니다.선택 사항.
Save Changes를 클릭합니다.
Atlas Search JSON Editor를 사용하는 경우 다음을 수행합니다.
인덱스에 다음 설정 중 하나를 추가합니다.
필드 이름설명필요성mappings.fields
mappings.dynamic
이false
인 경우 필요합니다.자신만의 필드 매핑을 정의하는 것은 고급 사용자에게만 권장됩니다.
인덱싱할 필드를 지정합니다. 자세한 내용은 필드 매핑 정의를 참조하세요.
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 검색 인덱스 구문 검토를 참조하세요.
Next를 클릭합니다.
선택 사항. Visual Editor를 사용하면 인덱스 정의 초안을 저장하거나 삭제할 수 있습니다.
참고
Visual Editor를 사용하고 인덱스 정의에 정적 매핑이 포함된 경우 인덱스 정의를 초안으로 저장할 수 있습니다. 기본 인덱스 정의는 초안으로 저장할 수 없습니다. 사용자 지정 인덱스 정의만 초안으로 저장할 수 있습니다.
Cancel를 클릭합니다.
Save Draft 또는 Delete Draft를 클릭합니다.
중요
보류 중인 인덱스 초안이 있는 경우 새 인덱스를 만들 수 없습니다.
인덱스 초안을 사용하여 인덱스를 만드는 방법에 대해 자세히 알아보려면 Atlas Search 인덱스 초안 재개 또는 삭제를 참조하세요.
시청을 통한 학습을 선호하시나요?
다양한 복잡성의 Atlas Search 인덱스를 생성하는 방법을 보여주는 이 비디오 튜토리얼을 따라해 보세요.
지속 시간 소요 시간: 15분
mongosh
를 통해 Atlas Search 인덱스를 생성하려면 다음을 수행합니다.
mongosh
를 사용하여 연결합니다.
자세한 내용은 mongosh
를 통한 연결을 참조하세요.
Atlas Search 인덱스를 생성합니다.
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
MongoDB Compass에서 Atlas 클러스터에 연결합니다.
Compass를 열고 Atlas 클러스터에 연결합니다. 연결에 대한 자세한 내용은 Compass를 통한 연결을 참조하세요.
Atlas Search 인덱스를 생성하기 위해 C 드라이버를 사용하려면 애플리케이션 내에서 검색 인덱스를 정의하고 mongoc_collection_command_simple()
메서드를 호출하세요.
참고
Atlas Search 인덱스 관리 방법은 비동기적으로 실행됩니다. 드라이버 메서드는 성공적으로 실행되었는지 확인하기 전에 반환될 수 있습니다. 검색 인덱스의 현재 상태를 확인하려면 $listSearchIndexes
파이프라인 단계와 함께 집계 작업을 실행합니다.
다음 코드 예시를 파일에 복사합니다.
다음 샘플 응용 프로그램에서는 createSearchIndexes
명령을 지정하여 컬렉션의 필드를 동적으로 인덱싱하는 검색 인덱스를 정의합니다. 그런 다음 애플리케이션은 명령 및 검색 인덱스 정보를 BSON으로 변환하고 이 정보를 mongoc_collection_command_simple()
메서드에 전달하여 검색 인덱스를 생성합니다. 자세한 사항은 Atlas 검색 인덱스 구문 검토를 참조하세요.
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()
메서드를 호출하여 검색 인덱스를 만듭니다.
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; }
다음 값을 지정하고 파일을 저장합니다.
Atlas 연결 문자열입니다. 자세한 사항은 드라이버를 통해 연결을 참조하십시오.
인덱스를 작성하려는 데이터베이스 및 컬렉션입니다.
인덱스의 이름입니다. 인덱스 이름을 생략하는 경우 Atlas Search는 인덱스 이름을
default
으로 지정합니다.
검색 인덱스 정의. 자세한 내용은 Atlas 검색 인덱스 구문 검토를 참조하세요.
Atlas Search 인덱스를 생성하기 위해 C++ 드라이버를 사용하려면 애플리케이션 내에서 검색 인덱스를 정의하고 create_one()
메서드를 호출하세요.
참고
Atlas 검색 인덱스 관리 방법은 비동기적으로 실행됩니다. 드라이버 메서드는 성공적으로 실행되었는지 확인하기 전에 반환될 수 있습니다. 검색 인덱스의 현재 상태를 확인하려면 검색 인덱스 뷰 인스턴스에서 list()
메서드를 호출하세요.
다음 코드 예시를 파일에 복사합니다.
다음 샘플 애플리케이션은 컬렉션의 필드를 동적으로 인덱싱하기 위해 검색 인덱스 이름과 정의를 search_index_model()
메서드에 전달합니다. 그런 다음 애플리케이션은 검색 인덱스를 만들기 위해 검색 인덱스 사양을 create_one()
메서드에 전달합니다. 자세한 내용은 Atlas Search 인덱스 구문 검토를 참조하세요.
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()
메서드에 전달하여 검색 인덱스를 생성합니다.
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; }
다음 값을 지정하고 파일을 저장합니다.
Atlas 연결 문자열입니다. 자세한 사항은 드라이버를 통해 연결을 참조하십시오.
인덱스를 작성하려는 데이터베이스 및 컬렉션입니다.
인덱스의 이름입니다. 인덱스 이름을 생략하는 경우 Atlas Search는 인덱스 이름을
default
으로 지정합니다.
검색 인덱스 정의. 자세한 내용은 Atlas 검색 인덱스 구문 검토를 참조하세요.
단일 인덱스 만들기
.NET/C# 드라이버로 Atlas Search 인덱스를 생성하려면 다음을 수행합니다.
인덱스를 정의하는
BsonDocument
를 생성합니다.BsonDocument
를CreateOne()
또는CreateOneAsync()
메서드에 전달하세요.
다음 샘플 애플리케이션은 컬렉션의 필드를 동적으로 인덱싱하는 검색 인덱스를 정의한 다음 CreateOne()
메서드를 실행하여 인덱스를 만듭니다. 자세한 사항은 Atlas 검색 인덱스 구문 검토를 참조하세요.
Program.cs
파일의 내용을 인덱스를 정의하는 BsonDocument
로 바꿉니다.
다음 예제에서 자리 표시자 값을 변경합니다.
값 | 설명 |
---|---|
| Atlas 연결 문자열입니다. 자세한 사항은 드라이버를 통해 연결을 참조하십시오. |
| 인덱스를 생성하려는 데이터베이스입니다. |
| 인덱스를 생성하려는 컬렉션입니다. |
| 인덱스의 이름입니다. 인덱스 이름을 생략하는 경우 Atlas Search는 인덱스 이름을 |
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);
여러 인덱스 생성
한 번에 여러 개의 Atlas Search 인덱스를 만들려면 다음을 수행하세요.
검색 인덱스 정의를 포함하는
IEnumerable<CreateSearchIndexModel>
의 인스턴스를 구성합니다.컬렉션을
CreateMany()
또는CreateManyAsync()
메서드에 전달합니다.
다음 예시에서는 CreateMany()
메서드를 사용하여 여러 인덱스를 만드는 방법을 보여 줍니다.
Program.cs
파일의 내용을 인덱스를 정의하는 BsonDocument
로 바꿉니다.
다음 예제에서 자리 표시자 값을 변경합니다.
값 | 설명 |
---|---|
| Atlas 연결 문자열입니다. 자세한 사항은 드라이버를 통해 연결을 참조하십시오. |
| 인덱스를 생성하려는 데이터베이스입니다. |
| 인덱스를 생성하려는 컬렉션입니다. |
| 첫 번째 인덱스의 이름입니다. |
| 마지막 인덱스의 이름입니다. |
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);
Java 드라이버를 사용하여 Atlas Search 인덱스를 생성하려면 검색 인덱스를 정의하는 문서를 구성한 다음 createSearchIndex()
또는 createSearchIndexes()
메서드에 문서를 전달합니다. 자세한 내용은 드라이버 설명서를 참조하세요.
참고
Atlas 검색 인덱스 관리 방법은 비동기적으로 실행됩니다. 드라이버 메서드는 성공적으로 실행되었는지 확인하기 전에 반환될 수 있습니다. 인덱스의 현재 상태를 확인하려면 listSearchIndexes()
메서드를 호출합니다.
다음 코드 예시를 파일에 복사합니다.
다음 샘플 애플리케이션은 컬렉션의 필드를 동적으로 인덱싱하는 검색 인덱스를 정의한 후 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)); } } }
다음 값을 지정하고 파일을 저장합니다.
Atlas 연결 문자열입니다. 자세한 사항은 드라이버를 통해 연결을 참조하십시오.
인덱스를 작성하려는 데이터베이스 및 컬렉션입니다.
인덱스의 이름입니다. 인덱스 이름을 생략하는 경우 Atlas Search는 인덱스 이름을
default
로 지정합니다.
검색 인덱스를 정의하는 필드입니다. 자세한 내용은 Atlas 검색 인덱스 구문 검토를 참조하세요.
단일 인덱스 만들기
노드 드라이버를 통해 Atlas Search 인덱스를 생성하려면 다음을 수행하세요.
애플리케이션에서 검색 인덱스를 정의합니다.
createSearchIndex
또는createSearchIndexes
헬퍼 메서드를 실행합니다.
create-index.js
이라는 이름의 다음 샘플 애플리케이션은 컬렉션의 필드를 동적으로 인덱싱하는 검색 인덱스를 정의한 다음 createSearchIndex
명령을 실행하여 인덱스를 생성합니다. 자세한 사항은 Atlas 검색 인덱스 구문 검토를 참조하십시오.
검색 인덱스를 정의합니다.
다음 예제에서 자리 표시자 값을 변경합니다.
값 | 설명 |
---|---|
| Atlas 연결 문자열입니다. 자세한 사항은 드라이버를 통해 연결을 참조하십시오. |
| 인덱스를 생성하려는 데이터베이스입니다. |
| 인덱스를 생성하려는 컬렉션입니다. |
| 인덱스의 이름입니다. 인덱스 이름을 생략하면 Atlas Search에서 인덱스 이름을 |
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);
여러 인덱스 생성
한 번에 여러 개의 Atlas Search 인덱스를 만들려면 다음을 수행하세요.
애플리케이션에서 검색 인덱스의 배열을 정의합니다.
배열을
createSearchIndexes
명령으로 전달합니다.
다음 예제에서는 createSearchIndexes
명령을 사용하여 여러 인덱스를 만드는 방법을 보여줍니다.
검색 인덱스를 정의합니다.
다음 예제에서 자리 표시자 값을 변경합니다.
값 | 설명 |
---|---|
| Atlas 연결 문자열입니다. 자세한 사항은 드라이버를 통해 연결을 참조하십시오. |
| 인덱스를 생성하려는 데이터베이스입니다. |
| 인덱스를 생성하려는 컬렉션입니다. |
| 첫 번째 인덱스의 이름입니다. |
| 마지막 인덱스의 이름입니다. |
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);
Python 드라이버를 사용하여 Atlas Search 인덱스를 생성하려면, 애플리케이션에서 검색 인덱스를 정의하고 create_search_index()
메소드를 호출하세요.
참고
Atlas 검색 인덱스 관리 방법은 비동기적으로 실행됩니다. 드라이버 메서드는 성공적으로 실행되었는지 확인하기 전에 반환될 수 있습니다. 검색 인덱스의 현재 상태를 확인하려면 컬렉션에서 list_search_indexes()
메서드를 호출하세요.
예시
다음 코드 예시를 파일에 복사합니다.
다음 샘플 애플리케이션은 컬렉션의 필드를 동적으로 인덱싱하기 위해 검색 인덱스를 정의합니다. 그런 다음 애플리케이션은 컬렉션에서 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)
다음 값을 지정하고 파일을 저장합니다.
Atlas 연결 문자열입니다. 자세한 사항은 드라이버를 통해 연결을 참조하십시오.
인덱스를 작성하려는 데이터베이스 및 컬렉션입니다.
인덱스의 이름입니다. 인덱스 이름을 생략하는 경우 Atlas Search는 인덱스 이름을
default
으로 지정합니다.
검색 인덱스 정의. 자세한 내용은 Atlas 검색 인덱스 구문 검토를 참조하세요.
Atlas Search 인덱스를 생성하면 Atlas Search 페이지에 Atlas Search 인덱스에 대한 정보가 표시됩니다. Status 열은 클러스터의 프라이머리 노드에 있는 인덱스의 현재 상태를 표시합니다. 자세한 내용은 인덱스 상태 검토를 참조하세요.
경고
이미 Atlas Search 인덱스가 있는 컬렉션을 샤드하는 경우, 컬렉션이 샤드에 표시되기 시작할 때 잠시 동안 쿼리 중단 시간이 발생할 수 있습니다. 또한 이미 샤드된 컬렉션에 대한 샤드를 추가하고 Atlas Search 인덱스가 포함된 경우, 추가된 샤드에서 초기 동기화 프로세스가 완료될 때까지 해당 컬렉션에 대한 검색 쿼리가 실패합니다. 자세한 내용은 초기 동기화 프로세스를 참조하세요.