updateSearchIndex
정의
버전 7.0에 새로 추가됨: (6.0.7부터 사용 가능)
기존 Atlas Search 인덱스 를 업데이트합니다.
mongosh
메서드 db.collection.updateSearchIndex()
는 updateSearchIndex
데이터베이스 명령 을 감싸는 래퍼를 제공합니다.
중요
이 명령은 MongoDB Atlas 에서 호스팅되는 배포에서만 실행할 수 있으며, 최소 M10 의 Atlas 클러스터 계층이 필요합니다.
구문
명령 구문:
db.runCommand( { updateSearchIndex: "<collection name>", id: "<index Id>", name: "<index name>", definition: { /* search index definition fields */ } } )
명령 필드
updateSearchIndex
명령은 다음 필드를 사용합니다.
필드 | 유형 | 필요성 | 설명 |
---|---|---|---|
updateSearchIndex | 문자열 | 필수 사항 | 업데이트할 인덱스가 포함된 collection의 이름입니다. |
id | 문자열 | 조건부 |
|
name | 문자열 | 조건부 | 업데이트할 인덱스의 이름입니다.
|
definition | 문서 | 필수 사항 | 업데이트된 검색 인덱스 정의를 설명하는 문서입니다. 지정된 정의가 검색 인덱스의 이전 정의를 대체합니다.
|
인덱스 정의 구문 검색
검색 인덱스 정의에는 다음 필드가 사용됩니다.
{ 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>" } ] }
필드 | 유형 | 필요성 | 설명 |
---|---|---|---|
analyzer | 문자열 | 옵션 | 인덱싱할 때 필드에 적용할 분석기 를 지정합니다.string 이 필드를 생략하면 인덱스는 표준 분석기를 사용합니다. |
searchAnalyzer | 문자열 | 옵션 | 텍스트를 검색하기 전에 쿼리 텍스트에 적용할 분석기 를 지정합니다. 이 필드를 생략하면 인덱스는
|
mappings | 객체 | 필수 사항 | 이 인덱스에 대해 서로 다른 경로에 있는 필드를 인덱싱하는 방법을 지정합니다. |
mappings.dynamic | 부울 | 옵션 | 이 인덱스에 대한 동적 필드 매핑을 활성화하거나 비활성화합니다.
생략하는 경우 기본값은 |
mappings.fields | 문서 | 조건부 | 동적 매핑이 비활성화된 경우에만 필요합니다. 인덱싱할 필드를 지정합니다. 자세히 알아보려면 필드 매핑 정의를 참조하세요. |
analyzers | 배열 | 옵션 | 이 인덱스에서 사용할 사용자 지정 분석기 를 지정합니다. |
storedSource | 부울 또는 저장된 소스 정의 | 옵션 | 반환 된 저장 소스 옵션을 사용하여 수행된 쿼리에 대해 저장할 문서 필드를 지정합니다. Atlas Search에는 모든 데이터 유형 의 필드를 저장할 수 있습니다.
생략하는 경우 기본값은 자세히 알아보려면 Atlas Search 인덱스에서 저장된 소스 필드 정의를 참조하세요. |
synonyms | 옵션 | 인덱스에 사용할 동의어 매핑을 지정합니다. 동의어를 구성하면 동일하거나 유사한 의미를 가진 단어를 색인화하고 검색할 수 있습니다. 자세히 알아보려면 Atlas Search 인덱스에서 동의어 매핑 정의를 참조하세요. |
행동
updateSearchIndex
명령은 새 인덱스 정의로 인덱스 빌드를 Atlas Triggers합니다. 명령에서 응답을 받는 시점과 업데이트된 인덱스가 준비되는 시점 사이에는 지연이 있을 수 있습니다.
이전 인덱스 정의는 새 인덱스가 작성되는 동안 쿼리를 계속 지원할 수 있습니다. 새 인덱스 작성이 완료되면 이전 인덱스를 더 이상 사용할 수 없습니다. 검색 인덱스의 상태를 확인하려면 $listSearchIndexes
집계 단계를 사용합니다.
액세스 제어
배포에서 액세스 제어를 적용하는 경우 updateSearchIndex
명령을 실행하는 사용자에게는 collection 또는 데이터베이스에 대한 updateSearchIndex
권한 조치가 있어야 합니다.
{ resource: { db : <database>, collection: <collection> }, actions: [ "updateSearchIndex" ] }
기본 제공 readWrite
및 restore
역할은 updateSearchIndex
권한을 제공합니다. 다음 예에서는 qa
데이터베이스에 readWrite
역할을 부여합니다.
db.grantRolesToUser( "<user>", [ { role: "readWrite", db: "qa" } ] )
출력
updateSearchIndex
명령이 성공하면 다음이 반환됩니다.
{ ok: 1 }
중요
응답 필드 ok: 1
는 명령이 성공했음을 나타냅니다. 그러나 응답을 받은 시점과 업데이트된 인덱스가 준비되고 원래 인덱스를 대체하는 시점 사이에는 지연이 있을 수 있습니다.
검색 인덱스의 상태를 확인하려면 $listSearchIndexes
집계 단계를 사용합니다.
예시
다음 예제에서는 searchIndex01
contacts
collection에서 이)라는 검색 인덱스를 업데이트합니다.
db.runCommand( { updateSearchIndex: "contacts", name: "searchIndex01", definition: { mappings: { dynamic: true }, storedSource: { exclude: [ "directors", "imdb.rating" ] } } } )