정의
버전 7.0의 새로운 기능: ( 6.0.7부터 사용 가능)
기존 MongoDB Search 인덱스 또는 MongoDB Vector Search 인덱스 업데이트합니다.
중요
Mongo쉬 방법
This page documents a mongosh method. This is not the documentation for database commands or language-specific drivers, such as Node.js.
데이터베이스 명령에 대해서는 updateSearchIndex 명령을 참조하십시오.
MongoDB API 드라이버의 경우 언어별 MongoDB 드라이버 설명서를 참조하세요.
호환성
이 메서드는 다음 환경에서 호스팅되는 배포에서 사용할 수 있습니다.
- MongoDB Atlas: The fully managed service for MongoDB deployments in the cloud
MongoDB Enterprise 버전 8.2 이상을 실행하는 Kubernetes 연산자배포서버
버전 이상 실행MongoDB Community 배포 8.2
자체 관리형 배포에 대해 자세히 학습 자체 관리형 배포에 대한 MongoDB 검색을 참조하세요.
구문
명령 구문:
db.<collection>.updateSearchIndex( <name>, { <definition> } )
명령 필드
updateSearchIndex() 는 다음 필드를 사용합니다.
필드 | 유형 | 필요성 | 설명 |
|---|---|---|---|
| 문자열 | 필수 사항 | 업데이트할 검색 인덱스의 이름입니다. |
| 문서 | 필수 사항 | 생성할 인덱스 를 설명하는 문서입니다. |
인덱스 정의 구문 검색
검색 인덱스 정의에는 다음 필드가 사용됩니다.
{ analyzer: "<analyzer-for-index>", searchAnalyzer: "<analyzer-for-query>", mappings: { dynamic: <boolean>, fields: { <field-definition> } }, analyzers: [ <custom-analyzer> ], storedSource: <boolean> | { <stored-source-definition> }, synonyms: [ { name: "<synonym-mapping-name>", source: { collection: "<source-collection-name>" }, analyzer: "<synonym-mapping-analyzer>" } ] }
필드 | 유형 | 필요성 | 설명 |
|---|---|---|---|
| 문자열 | 옵션 | 인덱싱할 때 필드에 적용할 분석기 를 지정합니다.string |
| 문자열 | 옵션 | 텍스트를 검색하기 전에 쿼리 텍스트에 적용할 분석기 를 지정합니다. 이 필드를 생략하면 인덱스는
|
| 객체 | 필수 사항 | 이 인덱스에 대해 서로 다른 경로에 있는 필드를 인덱싱하는 방법을 지정합니다. |
| 부울 | 옵션 | 이 인덱스에 대한 동적 필드 매핑을 활성화하거나 비활성화합니다. If set to
생략하는 경우 기본값은 |
| 문서 | 조건부 | 동적 매핑이 비활성화된 경우에만 필요합니다. Specifies the fields to index. To learn more, see Define Field Mappings for a MongoDB Search Index. |
| 배열 | 옵션 | 이 인덱스에서 사용할 사용자 지정 분석기 를 지정합니다. |
| 부울 또는 저장된 소스 정의 | 옵션 | Specifies document fields to store for queries performed using the returnedStoredSource option. You can store fields of all MongoDB Search Field Types on MongoDB Search. The
생략하는 경우 기본값은 자세한 학습 은 MongoDB 검색 인덱스에 저장된 소스 필드 정의를 참조하세요. |
| 옵션 | 인덱스 에 사용할 동의어 매핑을 지정합니다. 동의어를 구성하면 동일하거나 유사한 의미를 가진 단어를 인덱스 하고 검색 할 수 있습니다. 자세한 학습 은 MongoDB 검색 인덱스에서 동의어 매핑 정의를참조하세요. |
벡터 검색 인덱스 정의 구문
벡터 검색 인덱스 정의에는 다음 필드가 사용됩니다.
{ "fields": [ { "type": "vector" | "filter", "path": "<field-to-index>", "numDimensions": <number-of-dimensions>, "similarity": "euclidean" | "cosine" | "dotProduct" } ] }
벡터 검색 인덱스 정의 필드에 대한 설명은 벡터 검색 을 위해 필드를 인덱싱하는 방법을 참조하세요.
행동
updateSearchIndex() 새 인덱스 정의로 Atlas Triggers 인덱스 빌드를 합니다. 명령에서 응답을 받는 시점과 업데이트된 인덱스가 준비되는 시점 사이에는 지연이 있을 수 있습니다.
이전 인덱스 정의는 새 인덱스가 작성되는 동안 쿼리를 계속 지원할 수 있습니다. 새 인덱스 작성이 완료되면 이전 인덱스를 더 이상 사용할 수 없습니다. 검색 인덱스의 상태를 확인하려면 $listSearchIndexes 집계 단계를 사용합니다.
액세스 제어
배포서버에서 액세스 제어를 시행하는 경우 updateSearchIndex()를 실행하는 사용자에게 데이터베이스 또는 컬렉션에 대한 updateSearchIndex 권한 조치가 있어야 합니다.
{ resource: { db : <database>, collection: <collection> }, actions: [ "updateSearchIndex" ] }
기본 제공 readWrite 및 restore 역할은 updateSearchIndex 권한을 제공합니다. 다음 예에서는 qa 데이터베이스에 readWrite 역할을 부여합니다.
db.grantRolesToUser( "<user>", [ { role: "readWrite", db: "qa" } ] )
예시
다음 예시 새 MongoDB Search 인덱스 생성한 다음 해당 인덱스 업데이트합니다.
collection에 이라는 검색 인덱스를 만듭니다.
searchIndex01moviesdb.movies.createSearchIndex( "searchIndex01", { mappings: { dynamic: true }, storedSource: { exclude: [ "imdb.rating" ] } } ) searchIndex01인덱스를 업데이트합니다:db.movies.updateSearchIndex( "searchIndex01", { mappings: { dynamic: true }, storedSource: { exclude: [ "movies" ] } } )