Atlas Search 인덱스 편집
이 페이지의 내용
기존 Atlas Search 인덱스의 인덱스 정의를 변경할 수 있습니다. 인덱스의 이름은 바꿀 수 없습니다. 인덱스의 이름을 변경해야 하는 경우 새 인덱스를 만들고 이전 인덱스는 삭제해야 합니다.
필요한 액세스 권한
다음 표는 각 역할이 지원하는 액세스 모드를 보여줍니다.
역할 | 작업 | Atlas UI | Atlas API | Atlas Search API | Atlas CLI |
---|---|---|---|---|---|
Atlas Search 분석기 및 인덱스를 보려면 다음 단계를 따르세요. | ✓ | ✓ | |||
| Atlas Search 분석기 및 인덱스를 생성 및 관리하고 API 키에 역할을 할당합니다. | ✓ | ✓ | ✓ | ✓ |
✓ | ✓ | ||||
API 키에 대한 액세스 생성 목록 항목을 만들고 API 키에 대한 액세스 목록에 표시되는 클라이언트에서 요청을 보냅니다. | ✓ | ✓ | |||
Atlas UI 또는 API를 사용하여 Atlas Search 인덱스를 생성, 확인, 편집 및 삭제합니다. | ✓ | ✓ | ✓ |
Atlas Search 인덱스 편집
Atlas UI에서 또는 mongosh
, Atlas CLI, API 또는 원하는 언어로 지원되는 MongoDB 드라이버 를 사용하여 프로그래밍 방식으로 Atlas Search 인덱스를 편집할 수 있습니다.
참고
명령 또는 운전자 헬퍼 메서드를 사용하여 모든 Atlas cluster 계층에서 Atlas Search 인덱스를 편집할 수 있습니다.mongosh
지원되는 운전자 버전 목록은 MongoDB 드라이버를 참조하세요.
인덱스가 포함된 데이터베이스에 대해 최소한 atlasAdmin
역할 또는 dbAdmin
액세스 권한이 있어야 합니다. 자세히 알아보려면 기본 제공 역할 또는 특정 권한을참조하세요.
➤ 언어 선택 드롭다운 메뉴를 사용하여 이 섹션에 있는 예시의 언어를 설정합니다.
API를 통해 Atlas Search 인덱스를 편집하려면 다음을 수행하세요.
PATCH
요청을 보냅니다.
수정하려는 Atlas Search 인덱스의 고유 ID 또는 이름을 사용하여 search/indexes/
엔드포인트에 PATCH
요청을 보냅니다.
curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \ --header "Accept: application/json" \ --header "Content-Type: application/json" \ --include \ --request PATCH "https://cloud.mongodb.com/api/atlas/v2/groups/{groupId}/clusters/{clusterName}/search/indexes/{indexId}" \ --data ' { "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" } } ] } }'
각 엔드포인트에 대한 구문과 매개변수에 대해 자세히 알아보려면 이름으로 하나씩 업데이트 및 ID로 하나씩 업데이트를 참조하세요.
Atlas CLI를 사용하여 클러스터의 검색 인덱스를 업데이트하려면 다음 명령을 실행하세요.
atlas clusters search indexes update <indexId> [options]
명령 구문 및 매개변수에 대한 자세한 내용은 Atlas CLI 문서에서 Atlas 클러스터 검색 인덱스 업데이트를 참조하세요.
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 Analyzer | 옵션 | |
Query Analyzer | 옵션 | |
Dynamic Mapping | 필드의 동적 또는 정적 매핑을 지정합니다. 동적 매핑을 사용하지 않으려면
| 필수 사항 |
다음 고급 구성 설정을 검토하세요.
필드 이름 | 설명 | 필요성 |
---|---|---|
Field Mappings | 1}Dynamic Mapping Index Configurations 섹션의 이 비활성화된 경우 필수입니다. 자신만의 필드 매핑을 정의하는 것은 고급 사용자에게만 권장됩니다. 인덱싱할 필드를 지정합니다. 필드를 추가하려면 다음을 수행해야 합니다.
Atlas Search 인덱스 정의의 필드를 어떤 순서로든 정의할 수 있습니다.
| 조건부 |
Stored Source Fields | Atlas Search에 저장할 필드를 지정합니다. 다음 중 하나를 선택할 수 있습니다.
필드 저장에 관한 자세한 사항은 Atlas 검색 인덱스에서 저장된 소스 필드 정의를 참조하십시오.
| 옵션 |
Synonyms Mappings | 인덱스에 사용할 동의어 매핑을 지정합니다. 자세한 사항은 Atlas Search 인덱스에서 동의어 매핑 정의를 참조하십시오. 동의어 매핑을 추가하려면 각 동의어에 대해 다음 설정을 지정해야 합니다.
| 선택 사항. |
Index Partitions | 필드 객체가 2.1 십억을 초과하는 경우 사용할 파티션 수입니다.
중요옵션은 | 선택 사항. |
다음 인덱스 구성 설정을 검토합니다.
필드 이름 | 설명 | 필요성 |
---|---|---|
| 옵션 | |
| 옵션 | |
| 필드의 동적 또는 정적 매핑을 지정합니다. 동적 매핑을 사용하지 않으려면 | 필수 사항 |
다음 고급 구성 설정을 검토하세요.
필드 이름 | 설명 | 필요성 |
---|---|---|
|
자신만의 필드 매핑을 정의하는 것은 고급 사용자에게만 권장됩니다. 인덱싱할 필드를 지정합니다. 자세한 내용은 필드 매핑 정의를 참조하세요. Atlas Search 인덱스 정의의 필드를 어떤 순서로든 정의할 수 있습니다. | 조건부 |
| Atlas Search에 저장할 문서의 필드를 지정하세요. 값은 다음 중 하나일 수 있습니다.
생략하는 경우 기본값은
Atlas Search에서는 지원되는 모든 데이터 유형의 필드를 저장할 수 있습니다. 구문 및 필드에 관한 자세한 내용은 Atlas 검색 인덱스에서 저장된 소스 필드 정의를 참조하세요. | 옵션 |
| 인덱스에 사용할 동의어 매핑을 지정합니다. 자세한 사항은 Atlas Search 인덱스에서 동의어 매핑 정의를 참조하십시오. 동의어 매핑을 사용하여 동일한 분석기로 분석된 필드만 쿼리할 수 있습니다. 기본적으로 Atlas Search은 표준 분석기( | 옵션 |
| 필드 객체가 2.1 십억을 초과하는 경우 사용할 파티션 수입니다. .. include:: /includes/fact-numpartitions-preview.rst | 선택 사항. |
인덱스 정의 설정을 자세히 알아보려면 Atlas 검색 인덱스 구문 검토를 참조하세요.
mongosh
을(를) 통해 Atlas Search 인덱스를 편집하려면 db.collection.updateSearchIndex()
메서드를 사용합니다.
명령의 구문은 다음과 같습니다. 편집하려는 인덱스의 이름을 지정하고 새 인덱스 정의를 정의합니다. 이 정의는 인덱스의 기존 정의를 대체합니다. 자세히 알아보려면 Atlas Search 검색 인덱스 구문 검토를 참조하세요.
db.<collection>.updateSearchIndex( "<index-name>", /* updated search index definition */ )
예시
다음 명령은 default
movies
정적 매핑 을사용하도록 collection에서 검색 인덱스라는 를 업데이트합니다.
db.movies.updateSearchIndex( "default", { "mappings": { "dynamic": false, "fields": { "<field-name>": { "type": "<field-type>" } } } )
참고
db.collection.updateSearchIndex()
명령은 출력을 반환하지 않습니다. Atlas UI를 사용하여 인덱스 상태를 볼 수 있습니다.
C 드라이버를 사용하여 Atlas Search 인덱스를 편집하려면 애플리케이션에서 업데이트된 색인 정보를 지정하고 mongoc_collection_command_simple()
메서드를 호출하세요.
예시
다음 코드 예시를 파일에 복사합니다.
다음 샘플 애플리케이션은 updateSearchIndex
명령, 업데이트된 인덱스 정의 및 기존 인덱스 이름을 지정합니다. 그런 다음, 애플리케이션은 명령과 업데이트된 인덱스 정보를 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 updated index definition const char *cmd_str = BSON_STR({ "updateSearchIndex" : "<collectionName>", "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; } // Update the Atlas search index by running the command if (!mongoc_collection_command_simple (collection, &cmd, NULL, NULL, &error)) { fprintf(stderr, "Failed to run updateSearchIndex: %s\n", error.message); ok = false; goto cleanup; } printf ("Index updated!\n"); cleanup: mongoc_collection_destroy (collection); mongoc_database_destroy (database); mongoc_client_destroy (client); bson_destroy (&cmd); mongoc_cleanup (); return ok ? EXIT_SUCCESS : EXIT_FAILURE; }
다음 값을 지정하고 파일을 저장합니다.
Atlas 연결 문자열입니다. 자세한 사항은 드라이버를 통해 연결을 참조하십시오.
인덱스를 업데이트하려는 데이터베이스 및 컬렉션입니다.
업데이트하려는 인덱스의 이름입니다.
검색 인덱스를 재정의하는 필드입니다. 자세한 내용은 Atlas 검색 인덱스 구문 검토를 참조하세요.
C++ 드라이버를 사용하여 Atlas Search 인덱스를 편집하려면 검색 인덱스 뷰에서 update_one()
메서드를 호출합니다.
예시
다음 코드 예시를 파일에 복사합니다.
다음 샘플 애플리케이션은 검색 인덱스 뷰를 인스턴스화하고 새 Atlas Search 인덱스 정의를 지정합니다. 그런 다음 애플리케이션은 이 정의와 기존 인덱스 이름을 update_one()
메서드에 전달합니다. 이 메서드는 새 정의 문서를 반영하도록 기존 인덱스를 업데이트합니다.
using namespace mongocxx; using bsoncxx::builder::basic::make_document; int main() { mongocxx::instance instance{}; try { // Connect to your Atlas deployment mongocxx::uri uri("<connectionString>"); mongocxx::client client(uri); // Access your database and collection auto db = client["<databaseName>"]; auto collection = db["<collectionName>"]; // Access the indexes in your collection auto siv = collection.search_indexes(); // Specify a new definiton and update your search index auto newDefinition = make_document(kvp("mappings", make_document(kvp("dynamic", true)))); siv.update_one("<indexName>", newDefinition.view()); } catch (const std::exception& e) { std::cout<< "Exception: " << e.what() << std::endl; } return 0; }
다음 값을 지정하고 파일을 저장합니다.
Atlas 연결 문자열입니다. 자세한 사항은 드라이버를 통해 연결을 참조하십시오.
인덱스를 업데이트하려는 데이터베이스 및 컬렉션입니다.
업데이트하려는 인덱스의 이름입니다.
검색 인덱스를 재정의하는 필드입니다. 자세한 내용은 Atlas 검색 인덱스 구문 검토를 참조하세요.
.NET/C# 드라이버를 사용하여 Atlas Search 인덱스를 편집하려면 Update()
또는 UpdateAsync()
메서드를 사용합니다.
예시
다음 샘플 애플리케이션은 기존 인덱스 정의를 업데이트합니다. 다음 값을 지정합니다.
Atlas 연결 문자열입니다. 자세한 사항은 드라이버를 통해 연결을 참조하십시오.
검색 인덱스를 만든 데이터베이스 및 컬렉션.
기존 정의를 대체할 새 인덱스 정의입니다. 이 예에서는 정적 매핑을 사용하도록 인덱스를 업데이트합니다. 특정 인덱싱 요구 사항에 맞게 이 정의를 변경할 수 있습니다. 자세한 사항은 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 index var index = new BsonDocument { // updated search index definition { "mappings", new BsonDocument { { "dynamic", false }, { "fields", new BsonDocument { { "<field-name>", new BsonDocument { { "type", "<field-type>" } } } } } } } }; collection.SearchIndexes.Update("<index-name>", index);
샘플 애플리케이션을 실행하려면 csharp-update-index
(이)라는 새 .NET 콘솔 프로젝트를 만들고 이전 코드 예시를 Program.cs
파일에 복사합니다. 그 후 다음 명령을 사용하여 프로젝트를 실행합니다.
dotnet run csharp-update-index.csproj
참고
Update()
메서드는 출력을 반환하지 않습니다. Atlas UI를 사용하여 인덱스 상태를 볼 수 있습니다.
Java 드라이버를 사용하여 컬렉션에서 Atlas Search 인덱스를 편집하려면 검색 인덱스 설정을 수정하는 문서를 작성한 다음 updateSearchIndex()
메서드에 문서를 전달합니다. Java Driver v4.11.0 이상이 있어야 합니다.
다음 코드 예시를 파일에 복사합니다.
1 import com.mongodb.client.MongoClient; 2 import com.mongodb.client.MongoClients; 3 import com.mongodb.client.MongoCollection; 4 import com.mongodb.client.MongoDatabase; 5 import org.bson.Document; 6 7 public class EditIndex { 8 public static void main(String[] args) { 9 // connect to your Atlas cluster 10 String uri = "<connection-string>"; 11 12 try (MongoClient mongoClient = MongoClients.create(uri)) { 13 // set namespace 14 MongoDatabase database = mongoClient.getDatabase("<document-name>"); 15 MongoCollection<Document> collection = database.getCollection("<collection-name>"); 16 // define field mappings 17 Document index = new Document("analyzer", "<analyzer-name>").append( 18 "mappings", new Document("dynamic", <true|false>) 19 .append("fields", new Document("<field-name>", 20 new Document("type", "<field-type>")))); 21 // run the updateSearchIndex() method 22 collection.updateSearchIndex("<index-name>", index); 23 } 24 } 25 }
코드에서 다음 값을 교체한 다음 파일을 저장합니다.
<connection-string>
- Atlas 연결 문자열입니다. 자세한 내용은 드라이버를 통해 연결을 참조하세요.참고
연결 문자열에 writeConcern 설정을 포함하지 마세요.
<database-name>
- 컬렉션이 포함된 데이터베이스의 이름입니다.<collection-name>
- 인덱스를 검색하려는 컬렉션의 이름입니다.<analyzer-name>
- 분석기의 이름.dynamic
- 필드를 자동으로 인덱싱할지 여부를 나타내는 플래그입니다.<field-name>
- 인덱싱할 필드의 이름입니다.<field-type>
- 필드 데이터 유형.<index-name>
- 인덱스의 이름입니다.
파일을 컴파일하고 실행합니다.
javac EditIndex.java java EditIndex
updateSearchIndex()
메서드는 비동기적으로 실행됩니다. listSearchIndexes()
메서드를 사용하여 변경 사항이 인덱스에 적용되었는지 확인합니다. Atlas Search 인덱스를 검색하는 방법을 자세히 알아보려면 절차를 참조하세요.
노드 드라이버를 통해 Atlas Search 인덱스를 편집하려면 updateSearchIndex
도우미 메서드를 사용합니다.
예시
update-index.js
라는 다음 샘플 애플리케이션을 사용하여 기존 인덱스 정의를 업데이트할 수 있습니다. 다음 값을 지정합니다.
Atlas 연결 문자열입니다. 자세한 사항은 드라이버를 통해 연결을 참조하십시오.
검색 인덱스를 만든 데이터베이스 및 컬렉션.
기존 정의를 대체할 새 인덱스 정의입니다. 이 예에서는 정적 매핑을 사용하도록 인덱스를 업데이트합니다. 특정 인덱싱 요구 사항에 맞게 이 정의를 변경할 수 있습니다. 자세한 사항은 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 your Atlas Search index const index = { /* updated search index definition */ "mappings": { "dynamic": false, "fields": { "<field-name>": { "type": "<field-type>" } } } } // run the helper method await collection.updateSearchIndex("<index-name>", index); } finally { await client.close(); } } run().catch(console.dir);
샘플 애플리케이션을 실행하려면 다음 명령을 사용합니다.
node update-index.js
참고
updateSearchIndex
메서드는 출력을 반환하지 않습니다. Atlas UI를 사용하여 인덱스 상태를 볼 수 있습니다.
Python Driver를 사용하여 Atlas Search 인덱스를 업데이트하려면 컬렉션에서 update_search_index()
메서드를 호출하세요.
예시
다음 코드 예시를 파일에 복사합니다.
다음 샘플 애플리케이션은 새로운 Atlas Search 인덱스 정의를 지정합니다. 그런 다음, 애플리케이션은 이 정의와 기존 인덱스 이름을 update_search_index()
메서드에 전달하고, 이 메서드는 기존 인덱스를 업데이트하여 새 정의 문서를 반영합니다.
from pymongo.mongo_client import MongoClient def edit_index(): # Connect to your Atlas deployment uri = "<connectionString>" client = MongoClient(uri) # Access your database and collection database = client["<databaseName>"] collection = database["<collectionName>"] # Specify a new index definition definition = { "mappings": { "dynamic": True }, } # Update your search index collection.update_search_index("<indexName>", definition)
다음 값을 지정하고 파일을 저장합니다.
Atlas 연결 문자열입니다. 자세한 사항은 드라이버를 통해 연결을 참조하십시오.
인덱스를 업데이트하려는 데이터베이스 및 컬렉션입니다.
업데이트하려는 인덱스의 이름입니다.
검색 인덱스를 재정의하는 필드입니다. 자세한 내용은 Atlas 검색 인덱스 구문 검토를 참조하세요.
참고
새 인덱스가 빌드되는 동안 노드마다 다양한 속도로 업데이트될 수 있습니다. 이 기간 동안 새 인덱스 정의와 이전 인덱스 정의가 모두 반영된 쿼리 결과가 혼합되어 나타날 수 있습니다. 인덱스 상태 세부 정보 페이지에서 쿼리를 제공하는 인덱스를 볼 수 있습니다.