Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ / /

updateSearchIndex

이 페이지의 내용

  • 정의
  • 구문
  • 명령 필드
  • 인덱스 정의 구문 검색
  • 행동
  • 액세스 제어
  • 출력
  • 예시
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
문자열
조건부

id 업데이트할 인덱스의 입니다.

id 또는 name 필드 중 하나 를 지정해야 합니다.

name
문자열
조건부

업데이트할 인덱스의 이름입니다.

id 또는 name 필드 중 하나 를 지정해야 합니다.

definition
문서
필수 사항

업데이트된 검색 인덱스 정의를 설명하는 문서입니다. 지정된 정의가 검색 인덱스의 이전 정의를 대체합니다.

definition 구문에 대한 자세한 내용은 Atlas Search 인덱스 정의 구문을 참조하세요.

검색 인덱스 정의에는 다음 필드가 사용됩니다.

{
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
문자열
옵션

텍스트를 검색하기 전에 쿼리 텍스트에 적용할 분석기 를 지정합니다.

이 필드를 생략하면 인덱스는 analyzer 필드에 지정된 것과 동일한 분석기를 사용합니다.

searchAnalyzeranalyzer 필드를 모두 생략하면 인덱스는 표준 분석기를 사용합니다.

mappings
객체
필수 사항
이 인덱스에 대해 서로 다른 경로에 있는 필드를 인덱싱하는 방법을 지정합니다.
mappings.dynamic
부울
옵션

이 인덱스에 대한 동적 필드 매핑을 활성화하거나 비활성화합니다.

true 로 설정하면 인덱스에 지원되는 데이터 유형이 포함된 모든 필드가 포함됩니다.

false로 설정하면 mappings.fields를 사용하여 인덱싱할 개별 필드를 지정해야 합니다.

생략하는 경우 기본값은 false입니다.

mappings.fields
문서
조건부

동적 매핑이 비활성화된 경우에만 필요합니다.

인덱싱할 필드를 지정합니다. 자세히 알아보려면 필드 매핑 정의를 참조하세요.

analyzers
배열
옵션
이 인덱스에서 사용할 사용자 지정 분석기 를 지정합니다.
storedSource
옵션

반환 된 저장 소스 옵션을 사용하여 수행된 쿼리에 대해 저장할 문서 필드를 지정합니다.

Atlas Search에는 모든 데이터 유형 의 필드를 저장할 수 있습니다. storedSource 값은 다음 중 하나일 수 있습니다.

  • true, 모든 필드를 저장하려는 경우

  • false, 어떤 필드도 저장하지 않으려는 경우

  • 스토리지에서 include 또는 exclude )로 필드를 지정하는 객체 입니다.

생략하는 경우 기본값은 false입니다.

자세히 알아보려면 Atlas Search 인덱스에서 저장된 소스 필드 정의를 참조하세요.

synonyms
옵션

인덱스에 사용할 동의어 매핑을 지정합니다. 동의어를 구성하면 동일하거나 유사한 의미를 가진 단어를 색인화하고 검색할 수 있습니다.

자세히 알아보려면 Atlas Search 인덱스에서 동의어 매핑 정의를 참조하세요.

updateSearchIndex 명령은 새 인덱스 정의로 인덱스 빌드를 Atlas Triggers합니다. 명령에서 응답을 받는 시점과 업데이트된 인덱스가 준비되는 시점 사이에는 지연이 있을 수 있습니다.

이전 인덱스 정의는 새 인덱스가 작성되는 동안 쿼리를 계속 지원할 수 있습니다. 새 인덱스 작성이 완료되면 이전 인덱스를 더 이상 사용할 수 없습니다. 검색 인덱스의 상태를 확인하려면 $listSearchIndexes 집계 단계를 사용합니다.

배포에서 액세스 제어를 적용하는 경우 updateSearchIndex 명령을 실행하는 사용자에게는 collection 또는 데이터베이스에 대한 updateSearchIndex 권한 조치가 있어야 합니다.

{
resource: {
db : <database>,
collection: <collection>
},
actions: [ "updateSearchIndex" ]
}

기본 제공 readWriterestore 역할은 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" ]
}
}
} )

돌아가기

dropSearchIndex