Cosmos DB의 인덱싱은 데이터가 어떻게 진화하든 빠르고 유연한 쿼리 성능을 제공하도록 설계되었습니다. 이러한 샘플 인덱싱 정책을 탐색하여 Cosmos DB에서 워크로드에 인덱싱을 조정하는 방법을 알아보세요. 각 샘플은 인덱싱되는 속성, 방법 및 이유를 제어하는 다른 방법을 보여 줍니다.
모든 속성 인덱싱(기본값)
이 정책은 기본 동작인 모든 항목의 모든 속성을 인덱싱합니다. 최대 쿼리 유연성을 제공합니다.
{
"indexingMode": "consistent",
"includedPaths": [ { "path": "/*" } ],
"excludedPaths": []
}
인덱싱에서 속성 제외
이 정책은 특정 속성을 제외한 모든 속성을 인덱싱하여 해당 속성을 쿼리할 필요가 없는 경우 스토리지 및 쓰기 비용을 줄입니다.
{
"indexingMode": "consistent",
"includedPaths": [ { "path": "/*" } ],
"excludedPaths": [ { "path": "/nonIndexedProperty/?" } ]
}
특정 속성만 인덱싱합니다.
이 정책은 지정한 속성의 인덱싱만 수행하므로 데이터의 하위 집합만 쿼리하는 경우 쓰기 성능을 향상시키고 스토리지를 줄일 수 있습니다.
{
"indexingMode": "consistent",
"includedPaths": [
{ "path": "/name/?" },
{ "path": "/address/city/?" }
],
"excludedPaths": [ { "path": "/*" } ]
}
범위 및 공간 인덱스 사용
이 정책은 숫자의 범위 인덱스, 지리 공간 데이터의 공간 인덱스 등 다양한 속성에 서로 다른 인덱스 형식을 사용하는 방법을 보여 줍니다.
{
"indexingMode": "consistent",
"includedPaths": [
{
"path": "/___location/?",
"indexes": [
{ "kind": "Spatial", "dataType": "Point" }
]
},
{
"path": "/age/?",
"indexes": [
{ "kind": "Range", "dataType": "Number", "precision": -1 }
]
}
],
"excludedPaths": [ { "path": "/*" } ]
}
복합 인덱스 사용
이 정책은 복합 인덱스를 추가하여 여러 속성을 함께 필터링하거나 정렬하는 쿼리를 최적화합니다.
{
"indexingMode": "consistent",
"includedPaths": [ { "path": "/*" } ],
"excludedPaths": [],
"compositeIndexes": [
[
{ "path": "/category/?", "order": "ascending" },
{ "path": "/timestamp/?", "order": "descending" }
]
]
}
인덱싱 사용 안 함
이 정책은 데이터를 쿼리할 필요가 없는 쓰기 작업이 많은 워크로드에 유용한 컨테이너에 대한 인덱싱을 사용하지 않도록 설정합니다.
{
"indexingMode": "none"
}
벡터 인덱싱 정책
이 정책을 사용하면 속성에 대한 /vector
벡터 인덱싱이 가능하므로 3차원 float32
벡터에서 코사인 거리를 사용하여 효율적인 유사성 검색을 수행할 수 있습니다.
{
"vectorEmbeddings": [
{
"path": "/vector",
"dataType": "float32",
"distanceFunction": "cosine",
"dimensions": 3
},
]
}
전체 텍스트 인덱싱 정책
이 정책은 영어 분석을 사용하여 전체 텍스트 검색에 대한 속성을 구성 /text
하여 효율적인 텍스트 검색 쿼리를 허용합니다.
{
"defaultLanguage": "en-US",
"fullTextPaths": [
{
"path": "/text",
"language": "en-US"
}
]
}
제외된 시스템 속성을 사용하여 전체 텍스트 인덱싱
이 정책은 속성에 대한 /text
전체 텍스트 인덱싱을 가능하게 하며, 시스템 속성 _etag
은 인덱싱에서 제외합니다.
{
"indexingMode": "consistent",
"automatic": true,
"includedPaths": [
{
"path": "/*"
}
],
"excludedPaths": [
{
"path": "/\"_etag\"/?"
},
],
"fullTextIndexes": [
{
"path": "/text"
}
]
}
여러 속성에 대한 전체 텍스트 인덱싱
이 정책은 /text1
및 /text2
속성 모두에 대한 영어 언어 분석을 사용한 전체 텍스트 인덱싱을 활성화하여 여러 필드에서 효율적인 텍스트 검색 쿼리를 허용합니다.
{
"defaultLanguage": "en-US",
"fullTextPaths": [
{
"path": "/text1",
"language": "en-US"
},
{
"path": "/text2",
"language": "en-US"
}
]
}
하이브리드 검색에 대한 샘플 전체 텍스트 및 벡터 정책
이 정책은 전체 텍스트와 벡터 인덱싱을 결합하여 하이브리드 검색 기능을 사용하도록 설정하여 동일한 컨테이너 내에서 효율적인 텍스트 및 벡터 유사성 쿼리를 허용합니다.
{
"indexingMode": "consistent",
"automatic": true,
"includedPaths": [
{
"path": "/*"
}
],
"excludedPaths": [
{
"path": "/\"_etag\"/?"
},
{
"path": "/vector/*"
}
],
"fullTextIndexes": [
{
"path": "/text"
}
],
"vectorIndexes": [
{
"path": "/vector",
"type": "DiskANN"
}
]
}