Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/ / /
C 드라이버
/ /

Atlas search 인덱스

이 가이드에서는 C 드라이버를 사용하여 Atlas Search 및 Atlas Vector Search 인덱스를 프로그래밍 방식으로 관리하는 방법을 학습할 수 있습니다.

Atlas Search 기능을 사용하면 MongoDB Atlas에서 호스팅되는 컬렉션에서 전체 텍스트 검색을 수행할 수 있습니다. Atlas Search에 대해 자세히 알아보려면 Atlas 문서의 Atlas Search 개요를 참조하세요.

Atlas Vector Search를 사용하면 MongoDB Atlas에 저장된 벡터 임베딩에 대해 시맨틱 검색을 수행할 수 있습니다. Atlas Vector Search에 대해 자세히 알아보려면 Atlas 문서의 Atlas Vector Search 개요를 참조하세요.

다음 섹션에서는 Atlas Search 및 Vector Search 인덱스를 생성, 나열, 업데이트 및 삭제하는 방법을 보여주는 코드 예시를 제공합니다.

Atlas Search 인덱스 또는 벡터 검색 인덱스를 생성하려면 createSearchIndexes 명령을 mongoc_collection_command_simple() 함수에 전달합니다. 이 명령을 사용하여 하나 또는 여러 개의 인덱스를 생성할 수 있습니다.

다음 코드 예시에서는 Atlas Search 인덱스를 생성하는 방법을 보여줍니다.

bson_t cmd;
bson_error_t error;
char *cmd_str = bson_strdup_printf (
BSON_STR ({
"createSearchIndexes" : "%s",
"indexes" : [ {"definition" : {"mappings" : {"dynamic" : false}}, "name" : "<index name>"} ]
}),
"<collection name>");
bson_init_from_json (&cmd, cmd_str, -1, &error);
bson_free (cmd_str);
if (mongoc_collection_command_simple (collection, &cmd, NULL, NULL, &error)) {
printf ("Successfully created search index\n");
} else {
fprintf (stderr, "Failed to create search index: %s", error.message);
}
bson_destroy (&cmd);

다음 코드 예시는 Atlas Vector Search 인덱스를 생성하는 방법을 보여줍니다.

bson_t cmd;
bson_error_t error;
char * cmd_str = bson_strdup_printf(
BSON_STR({
"createSearchIndexes": "%s",
"indexes": [{
"name": "<index name>",
"type": "vectorSearch",
"definition": {
"fields": [{
"type": "vector",
"path": "plot_embedding",
"numDimensions": 1536,
"similarity": "euclidean"
}]
}
}]
}),
"<collection name>"
);
bson_init_from_json(&cmd, cmd_str, -1, &error);
bson_free(cmd_str);
if (mongoc_collection_command_simple(collection, &cmd, NULL, NULL, &error)) {
printf("Successfully created Vector Search index\n");
} else {
fprintf(stderr, "Failed to create Vector Search index: %s", error.message);
}
bson_destroy(&cmd);

다음 코드 예시는 mongoc_collection_command_simple() 함수를 한 번 호출하여 두 검색 인덱스를 생성하는 방법을 보여줍니다.

bson_t cmd;
bson_error_t error;
char * cmd_str = bson_strdup_printf(
BSON_STR({
"createSearchIndexes": "%s",
"indexes": [{
"definition": {
"mappings": {
"dynamic": false
}
},
"name": "<Atlas Search index name>"
},
{
"name": "<Vector Search index name>",
"type": "vectorSearch",
"definition": {
"fields": [{
"type": "vector",
"path": "plot_embedding",
"numDimensions": 1536,
"similarity": "euclidean"
}]
}
}
]
}),
"<collection name>");
bson_init_from_json(&cmd, cmd_str, -1, &error);
bson_free(cmd_str);
if (mongoc_collection_command_simple(collection, &cmd, NULL, NULL, &error)) {
printf("Successfully created search indexes\n");
} else {
fprintf(stderr, "Failed to create search indexes: %s", error.message);
}
bson_destroy(&cmd);

각 검색 인덱스를 정의하는 데 사용되는 구문에 대해 자세히 알아보려면 Atlas 문서의 다음 가이드를 참조하세요.

$listSearchIndexes 집계 단계를 mongoc_collection_aggregate() 함수에 전달하여 컬렉션의 모든 Atlas Search 및 Vector Search 검색 인덱스를 반환할 수 있습니다.

다음 코드 예시에서는 컬렉션의 검색 인덱스 목록을 출력하는 방법을 보여줍니다.

bson_t pipeline;
const bson_t *doc;
bson_error_t error;
const char *pipeline_str = BSON_STR ({"pipeline" : [ {"$listSearchIndexes" : {}} ]});
bson_init_from_json (&pipeline, pipeline_str, -1, &error);
mongoc_cursor_t *cursor =
mongoc_collection_aggregate (collection, MONGOC_QUERY_NONE, &pipeline, NULL, NULL);
while (mongoc_cursor_next (cursor, &doc)) {
char *str = bson_as_canonical_extended_json (doc, NULL);
printf ("%s\n", str);
bson_free (str);
}
bson_destroy (&pipeline);
mongoc_cursor_destroy (cursor);

updateSearchIndex 명령을 mongoc_collection_command_simple() 함수에 전달하여 Atlas Search 또는 벡터 검색 인덱스를 업데이트할 수 있습니다.

다음 코드는 이 가이드의 검색 인덱스 생성 섹션에서 생성된 Atlas Search 인덱스를 동적 매핑을 사용하도록 업데이트하는 방법을 보여줍니다.

bson_t cmd;
bson_error_t error;
char *cmd_str = bson_strdup_printf (
BSON_STR ({
"updateSearchIndex" : "%s",
"definition" : {"mappings" : {"dynamic" : true}}, "name" : "<index name>"}),
"<collection name>");
bson_init_from_json (&cmd, cmd_str, -1, &error);
bson_free (cmd_str);
if (mongoc_collection_command_simple (collection, &cmd, NULL, NULL, &error)) {
printf ("Successfully updated search index\n");
} else {
fprintf (stderr, "Failed to create search index: %s", error.message);
}
bson_destroy (&cmd);

다음 코드는 이 가이드의 검색 인덱스 생성 섹션에서 생성된 Atlas Vector Search 인덱스를 cosine 유사도 함수를 사용하도록 업데이트하는 방법을 보여줍니다.

bson_t cmd;
bson_error_t error;
char * cmd_str = bson_strdup_printf(
BSON_STR({
"updateSearchIndex": "%s",
"name": "<index name>",
"definition": {
"fields": [{
"type": "vector",
"path": "plot_embedding",
"numDimensions": 1536,
"similarity": "cosine"
}]
}
}),
"<collection name>"
);
bson_init_from_json(&cmd, cmd_str, -1, &error);
bson_free(cmd_str);
if (mongoc_collection_command_simple(collection, &cmd, NULL, NULL, &error)) {
printf("Successfully updated search index\n");
} else {
fprintf(stderr, "Failed to create search index: %s", error.message);
}
bson_destroy(&cmd);

dropSearchIndexes 명령을 mongoc_collection_command_simple() 함수에 전달하여 Atlas Search 또는 벡터 검색 인덱스를 삭제할 수 있습니다.

다음 코드에서는 컬렉션에서 검색 인덱스를 삭제하는 방법을 보여줍니다.

bson_t cmd;
bson_error_t error;
char *cmd_str = bson_strdup_printf (
BSON_STR ({
"dropSearchIndexes" : "%s",
"index" : "<index name>"
}),
"<collection name>");
bson_init_from_json (&cmd, cmd_str, -1, &error);
if (mongoc_collection_command_simple (collection, &cmd, NULL, NULL, &error)) {
printf ("Successfully deleted search index\n");
} else {
fprintf (stderr, "Failed to delete search index: %s", error.message);
}
bson_destroy (&cmd);

MongoDB Atlas Search에 대해 자세히 알아보려면 Atlas 문서의 Atlas Search 인덱스를 참조하세요.

MongoDB Atlas Vector Search에 대해 자세히 알아보려면 Atlas 문서의 벡터 검색을 위한 필드 인덱싱 방법을 참조하세요.

이 가이드 에서 설명하는 함수에 대해 자세히 학습 다음 API 문서를 참조하세요.

돌아가기

Multikey Indexes

이 페이지의 내용