문서 메뉴
문서 홈
/
MongoDB Atlas
/

Atlas Search 개요

이 페이지의 내용

  • Atlas Search 기본 사항
  • 인덱싱
  • 토큰화
  • 쿼리하기
  • 득점
  • Atlas Search 가용성
  • Atlas Search 아키텍처
  • 저장된 소스 아키텍처
  • 검색 노드 아키텍처
  • Atlas search 인덱스
  • Atlas Search 쿼리
  • 검색 노드 비용
  • 다음 단계

MongoDB의 Atlas Search를 사용하면 Atlas 클러스터의 데이터에 대한 세분화된 텍스트 인덱스 및 쿼리를 수행할 수 있습니다. 이를 통해 추가 관리 또는 데이터베이스와 함께 별도의 검색 시스템 없이 애플리케이션에 대한 고급 검색 기능을 사용할 수 있습니다. Atlas Search는 여러 종류의 텍스트 분석기 , $search$searchMeta같은 Atlas Search 애그리게이션 파이프라인 단계를 다른 MongoDB 애그리게이션 파이프라인 단계와 함께 사용하는 풍부한 쿼리 언어, 그리고 점수 기반 결과 순위에 대한 옵션을 제공합니다.

Atlas Search Playground 를 사용하면 Atlas 계정, 클러스터 또는 컬렉션 없이도 Atlas Search를 빠르게 사용해 볼 수 있습니다. 자세한 내용 은 설명서를 참조하세요.

다음 개념은 Atlas Search의 기초를 형성하며 애플리케이션을 최적화하는 데 필수적입니다.

검색에서 인덱스 는 데이터를 쉽게 검색할 수 있는 형식으로 분류하는 데이터 구조입니다. 검색 인덱스를 사용하면 전체 컬렉션을 스캔하지 않고도 특정 용어가 포함된 문서를 더 빠르게 검색할 수 있습니다. Atlas Search 인덱스와 MongoDB 인덱스 는 모두 데이터 검색 속도를 향상시키지만, 동일하지는 않다는 점에 유의하세요. 책 뒷면의 인덱스와 마찬가지로 검색 인덱스는 용어와 해당 용어가 포함된 문서 간의 매핑입니다. 검색 인덱스에는 문서 내 용어의 위치와 같은 기타 관련 메타데이터도 포함되어 있습니다.

일반적으로 모든 검색 애플리케이션에서는 검색 인덱스를 하나 이상 만들어야 합니다. 자세한 내용은 Atlas Search 인덱스를 참조하세요.

검색 인덱스를 만들 때는 먼저 데이터를 일련의 토큰 또는 용어 로 변환해야 합니다. 분석기 는 다음을 포함한 단계를 통해 이 프로세스를 용이하게 합니다.

  • 토큰화: 문자열의 단어를 인덱싱 가능한 토큰으로 분할합니다. 예를 들어 문장을 공백과 문장 부호로 나누는 것이 좋습니다.

  • 정규화: 데이터를 일관되게 표현하고 분석하기 쉽도록 구성합니다. 예를 들어 텍스트를 소문자로 변환하거나 중지 단어 라는 원치 않는 단어를 제거할 수 있습니다.

  • 어간 처리: 단어를 어근 형태로 줄입니다. 예를 들어 접미사, 접두사 및 복수형 단어 형태는 무시합니다.

토큰화의 세부 사항은 언어별로 다르며 추가 선택이 필요할 수 있습니다. 사용할 분석기는 데이터와 애플리케이션에 따라 다릅니다. 자세한 내용 은 분석기를 사용하여 데이터 처리를 참조하세요.

검색 쿼리는 인덱스를 참조하여 결과 집합을 반환합니다. 검색 쿼리는 보다 일반적인 정보 요구 사항을 충족하기 위한 것이라는 점에서 기존 데이터베이스 쿼리와 다릅니다. 데이터베이스 쿼리가 엄격한 구문을 따라야 하는 경우, 검색 쿼리는 간단한 텍스트 일치를 위한 것일 수도 있지만 유사한 구문, 숫자 또는 날짜 범위를 찾거나 정규 표현식 또는 와일드카드를 사용할 수도 있습니다.

자세한 내용은 Atlas Search 쿼리를 참조하세요.

각 문서는 쿼리 결과를 관련성이 가장 높은 순서에서 가장 낮은 순서로 반환할 수 있는 관련성 점수를 받습니다. 가장 간단한 점수 산정 방식에서, 쿼리 용어가 문서에 자주 나타나면 문서가 더 높은 점수를 받고, 컬렉션의 많은 문서에 쿼리 용어가 나타나면 더 낮은 점수를 받습니다. 점수는 사용자 정의할 수도 있습니다. 검색을 특정 도메인에 맞게 조정한다는 것은 관련성 기반 기본 점수를 다른 방식으로 부스트, 감쇠 또는 수정하여 사용자 지정하는 것을 의미하는 경우가 많습니다.

자세한 내용은 점수 문서를 참조하세요.

Atlas Search는 MongoDB 4.2 이상 버전을 실행하는 Atlas 인스턴스에서만 사용할 수 있습니다. 특정 기능의 경우 Atlas Search에 특정 버전의 MongoDB가 필요할 수 있습니다. 다음 표에는 특정 MongoDB 버전이 필요한 Atlas Search 기능이 나열되어 있습니다.

Atlas Search 기능
MongoDB 버전 기능
패싯
5.0.4+, 6.0+, 7.0+
6.0+, 7.0+
5.0.6+, 6.0+, 7.0+
5.0+
6.0+, 7.0+
6.0+, 7.0+
5.0+, 6.0+, 7.0+
6.0+, 7.0+
6.0+, 7.0+
6.0+, 7.0+
6.0+, 7.0+
$search searchAftersearchBefore 옵션
6.0.13+, 7.0.5+

time series 컬렉션에는 Atlas Search가 지원되지 않습니다.

Atlas Search 프로세스는 mongot Apache Lucenemongod 사용합니다. Atlas cluster의 각 노드에서 와 함께 실행됩니다.mongot 프로세스:

  1. 컬렉션에 대한 인덱스 정의의 규칙을 기반으로 Atlas Search 인덱스를 만듭니다.

  2. 문서의 현재 상태에 대한 변경 스트림 과 Atlas Search 인덱스를 정의한 컬렉션의 인덱스 변경 사항을 모니터링합니다.

  3. Atlas Search 쿼리를 처리하고 일치하는 문서를 반환합니다.

Atlas Search 아키텍처

Atlas Search 인덱스에 저장된 소스 필드를 정의하면 mongot 프로세스가 지정된 필드를 저장하고, 일치하는 문서의 쿼리에 returnStoredSource 옵션을 지정하면 데이터베이스에서 전체 문서 조회를 수행하는 대신 mongot에서 직접 저장된 필드를 반환합니다.

Atlas Search에 저장된 소스 아키텍처

클라우드 제공자의 전용(M10 이상) 샤드 및 비샤드 Atlas 클러스터의 경우, 워크로드 격리를 위해 mongot 프로세스만 실행하는 별도의 검색 노드를 배포할 수 있습니다. Atlas는 각 클러스터 또는 클러스터의 각 샤드와 함께 검색 노드를 배포합니다. 예를 들어 3 샤드가 있는 클러스터에 대해 2 검색 노드를 배포하는 경우 Atlas는 샤드당 2 6 검색 노드를 배포합니다.

별도의 검색 노드를 배포하면 다음과 같은 이점이 있습니다.

  • MongoDB 클러스터와 독립적으로 스토리지를 확장할 수 있습니다.

  • 쿼리 부하를 MongoDB와 독립적으로 확장할 수 있습니다.

별도의 검색 노드를 배포하면 mongot 프로세스가 독립적으로 구성할 수 있는 별도의 검색 노드에서 실행됩니다.

Atlas Search 개별 검색 노드 아키텍처

Atlas 클러스터에서 mongod 프로세스를 실행하는 데이터베이스 노드와 별도로 mongot 프로세스를 실행하도록 검색 노드를 구성할 수 있습니다. 또한 검색 노드 수와 각 검색 노드에 프로비저닝된 리소스의 양을 구성할 수도 있습니다.

서버리스 또는 멀티클라우드 클러스터의 경우 검색 노드를 별도로 배포할 수 없습니다. 검색 노드를 별도로 배포하는 방법에 대해 자세히 알아보려면 워크로드 격리를 위한 검색 노드를 참조하세요. UI 또는 API 에서 검색 노드를 배포하려면 클러스터 만들기를 참조하세요.

별도의 검색 노드를 배포하는 경우 Atlas는 각 mongot에 대해 mongod를 자동으로 할당합니다. mongot 는 저장하는 인덱스에 대한 변경 사항을 수신하고 동기화하기 위해 mongod 와 통신합니다.

클러스터의 모든 검색 노드를 삭제하면 검색 쿼리 결과 처리가 잠시 중단될 수 있습니다. 자세한 내용은 클러스터 수정을 참조하세요. Atlas 클러스터를 삭제하면 Atlas가 일시 중지된 후 관련된 모든 Atlas Search 배포(mongot 프로세스)를 삭제합니다.

참고

검색 노드에 사용되는 로컬 SSD는 인덱스 작업을 지원하기 위해 20%의 스토리지 오버헤드가 필요합니다.

Atlas Search 인덱스는 데이터를 쉽게 검색할 수 있는 형식으로 분류하는 데이터 구조입니다. 용어와 해당 용어가 포함된 문서 간의 매핑입니다. Atlas Search 인덱스를 사용하면 특정 식별자를 사용하여 문서를 더 빠르게 검색할 수 있습니다. Atlas Search를 사용하여 Atlas 클러스터의 데이터를 쿼리하려면 Atlas Search 인덱스를 구성해야 합니다.

단일 필드 또는 여러 필드에 대해 Atlas Search 인덱스를 만들 수 있습니다. 쿼리 시점에 관련 데이터를 포함하는 문서를 빠르게 검색할 수 있도록, 데이터를 정렬하거나 필터링하는 데 정기적으로 사용하는 필드를 인덱싱하는 것이 좋습니다.

다음 방법을 사용하여 인덱스할 필드를 지정할 수 있습니다:

  • Atlas Search에서 사용하는 동적 매핑 지원되는 유형의 각 문서의 모든 필드를 자동으로 인덱싱합니다. 이는 디스크 공간을 필요로 하고 클러스터 성능에 부정적인 영향을 미칠 수 있습니다.

  • 정적 매핑은 인덱싱할 필드를 선택적으로 식별할 수 있습니다. 필드에 다형성 데이터가 포함된 경우 Atlas Search는 인덱스 정의의 매핑에 해당하는 문서만 인덱싱하고 필드의 인덱스 정의에 지정된 매핑과 일치하지 않는 값이 포함된 문서는 무시합니다.

Atlas Search에 저장된 데이터는 Atlas 클러스터에 있는 컬렉션의 데이터와 동일한 복사본이 아니지만, Atlas Search 인덱스는 여전히 약간의 디스크 공간과 메모리를 차지합니다. 문자열 값이 포함된 필드에 대해 store 옵션을 사용하도록 설정하거나 인덱스에 저장된 소스 필드를 구성하는 경우 Atlas Search는 지정된 필드의 동일한 복사본을 디스크에 저장하므로 디스크 공간을 차지할 수 있습니다.

Atlas Search는 구두점, 대문자, 마침표 등의 차이를 보정하는 인덱싱 가능한 용어를 생성하기 위한 기본 제공 분석기를 제공합니다. 분석기는 쿼리에 구문 분석 및 언어 규칙을 적용합니다. 사용 가능한 기본 제공 문자 필터, 토크나이저 및 토큰 필터를 사용하여 사용자 지정 분석기를 만들 수도 있습니다. 기본 제공 분석기와 사용자 지정 분석기에 대해 자세히 알아보려면 분석기를 사용하여 데이터 처리를 참조하세요.

다른 데이터 유형에 대한 Atlas Search 지원에 대해 자세히 알아보려면 데이터 유형을 참조하세요. mongot 프로세스는 클러스터 내의 컬렉션에 대해 인덱싱된 필드와 _id 필드를 각 인덱스별로 디스크에 저장합니다.

기존 인덱스를 변경하면 Atlas Search는 다운타임 없이 인덱스를 다시 작성합니다. 이렇게 하면 인덱스 재작성이 완료될 때까지 기존 쿼리와 새 쿼리에 대해 이전 인덱스를 계속 사용할 수 있습니다. 별도의 검색 노드를 배포한 경우 Atlas Search는 다음 이벤트에 대한 인덱스도 다시 작성합니다.

별도의 검색 노드를 배포한 경우, Atlas는 인덱스 재구축 기간 동안 추가 검색 노드를 자동으로 배포하여 이전 인덱스를 최신 상태로 유지하고 새 인덱스가 빌드되는 동안 쿼리에 사용할 수 있습니다.

Atlas Search 인덱스를 정의한 컬렉션에 변경이 발생할 경우, 변경된 최신 데이터가 쿼리에 즉시 반영되지 않을 수 있습니다. 그러나 mongot 는 변경 스트림을 모니터링하여 저장된 데이터 복사본을 업데이트할 수 있으며, 최종적으로 Atlas Search 인덱스는 일관성을 유지합니다.

참고

전용 검색 노드의 경우

샤드 를 추가 및 조정하면 Atlas Search 인덱스 재구축이 트리거됩니다. 이 인덱스를 다시 작성하는 동안 인덱스에 최신 데이터가 없을 수 있습니다. 따라서 해당 샤드의 데이터에 대한 쿼리가 실패하거나 잘못된 결과를 반환할 수 있습니다.

Atlas Search 인덱스가 있는 컬렉션을 리샤딩 하는 경우 리샤딩 작업이 완료되면 컬렉션의 Atlas Search 인덱스를 사용할 수 없게 됩니다. 리샤딩 작업이 완료되면 Atlas Search 인덱스를 다시 작성 해야 합니다 .

참고

Atlas Search는 Atlas UI의 고객 키 관리를 사용하여 암호화 키로 Atlas Search 인덱스를 암호화하는 것을 지원하지 않습니다.

참조 항목: 보면서 배우기

이 동영상에서 Atlas Search 인덱스에 대한 개요를 확인하세요. 이 동영상에서는 분석기 및 Atlas Search 자동 완성 필드 유형에 대해 자세히 알아볼 수 있습니다.

소요 시간: 8분

컬렉션에 대한 Atlas Search 인덱스을 설정한 후 인덱스된 필드에 대해 쿼리를 실행할 수 있습니다.

Atlas Search 쿼리는 집계 파이프라인 단계 의 형태를 취합니다. Atlas Search는 $search$searchMeta 단계를 제공하며, 이 두 단계는 모두 쿼리 파이프라인의 첫 번째 단계여야 합니다. 이러한 단계는 쿼리 파이프라인의 다른 집계 파이프라인 단계 와 함께 사용할 수 있습니다. 이러한 파이프라인 단계에 대해 자세히 알아보려면 집계 파이프라인 단계 선택을 참조하세요.

Atlas Search는 또한 $search$searchMeta 애그리게이션 파이프라인 단계 내에서 사용할 수 있는쿼리연산자수집기 를 제공합니다. Atlas Search 연산자를 사용하면 Atlas 클러스터의 컬렉션에서 일치하는 데이터를 찾고 검색할 수 있습니다. 수집기는 검색 메타데이터 결과를 나타내는 문서를 반환합니다.

Atlas Search 연산자를 사용하여 용어, 구문, 지리적 도형 및 점, 숫자 값, 유사 문서, 동의어 등을 쿼리할 수 있습니다. 정규식 및 와일드카드 표현식을 사용하여 검색할 수도 있습니다. Atlas Search 복합 연산자를 사용하면 단계 내에서 여러 $search 연산자를 결합하여 복잡한 검색을 수행하고, Atlas Search에서 반환된 문서에반드시 있어야 하는 항목,없어야 하는 항목 또는 반드시 있어야 하는 항목을 기준으로 데이터를 필터링 할 수 있습니다. 복합 연산자를 사용하여 단계 자체에 $search 있는 문서를 일치시키거나 필터링할 수도 있습니다. } $match 다음에 를 실행하는 것은 복합 $search $search 연산자를 사용하여 를 실행하는 것보다 성능이 떨어집니다.

Atlas Search 연산자의 구문, 옵션 및 사용법에 대한 자세한 내용은 Atlas Search 쿼리에서 연산자 및 수집기 사용을 참조하세요.

쿼리를 실행할 때 Atlas Search는 구성된 읽기 설정 을 사용하여 쿼리를 실행할 노드를 식별합니다. 쿼리는 먼저 MongoDB 프로세스(복제본 mongod mongos 세트 클러스터의 경우 , 샤드 클러스터의 경우 )로 이동합니다. 샤드 클러스터의 경우, 클러스터 데이터는 인스턴스로 mongod 분할되며 각 는 mongot 동일한 노드에 있는 의 데이터에 대해서만 알고 mongod 있습니다. 따라서 특정 샤드를 대상으로 하는 쿼리를 실행할 수 없습니다. mongos 는 쿼리를 모든 샤드로 전달하여 이러한 분산 수집 쿼리를 만듭니다.구역 을 사용하여 클러스터의 샤드 하위 집합에 샤드 컬렉션을 배포하는 경우, Atlas Search는 쿼리 중인 컬렉션의 샤드가 $search 포함된 구역으로 쿼리를 라우팅하고 샤드에 대해서만 쿼리를 실행합니다. 컬렉션이 위치합니다.

MongoDB 프로세스는 쿼리를 동일한 노드의 mongot로 라우팅합니다. Atlas Search는 검색 및 점수 산정을 수행하고 일치하는 결과에 대한 문서 ID 및 기타 검색 메타데이터를 mongod로 반환합니다. 그런 다음 mongod는 일치하는 결과에 대해 암시적으로 전체 문서 조회를 수행하여 결과를 클라이언트에 반환합니다.

참고

전용 검색 노드의 경우

쿼리를 실행하면 먼저 구성된 읽기 설정에 따라 쿼리가 MongoDB 프로세스로 이동합니다. mongod 프로세스는 동일한 노드의 로드 밸런서를 통해 검색 쿼리를 라우팅하며, 로드 밸런서는 mongot 프로세스 전체에 요청을 분산합니다. Atlas Search mongot 프로세스는 검색 및 점수 산정을 수행하여 일치하는 결과를 mongod로 반환하고, mongod는 다시 클라이언트로 반환합니다. 쿼리에 $search 동시 옵션을 사용하는 경우 Atlas Search는 쿼리 내 병렬 처리를 활성화합니다. 자세한 내용은 세그먼트 간 쿼리 실행 병렬 처리를 참조하세요.

Atlas Search는 결과 세트의 모든 문서에 관련성 기반 점수를 부여합니다. 관련성 기반 점수 매기기를 통해 Atlas Search는 가장 높은 점수에서 가장 낮은 점수 순서로 문서를 반환할 수 있습니다. Atlas Search는 쿼리어가 문서에 자주 나타나는 경우 문서 점수를 높이고 컬렉션의 여러 문서에 쿼리어가 나타나면 낮은 점수를 줍니다. Atlas Search는 또한 부스트, 감쇠(decaying) 또는 또는 기타 수정 옵션을 통해 관련성 기반의 기본 점수를 사용자 맞춤형으로 조정하는 것도 가능합니다. 결과 점수 사용자 지정에 대해 자세히 알아보려면 결과에서 문서 점수 매기기를 참조하세요.

참조 항목: 보면서 배우기

이 동영상에서 Atlas Search로 쿼리를 검색하고 추적하는 방법에 대한 개요를 확인하세요. 이 동영상에서는 Atlas Search 연산자에 대한 내용 및 결과에서 문서의 점수를 산정하는 방법에 대해 자세히 알아볼 수 있습니다.

지속 시간 소요 시간: 15분

MongoDB는 단일 리전 전용(M10 이상) 클러스터에서만 별도의 검색 노드를 지원합니다. 검색 노드는 컴퓨팅 집약적인 NVMe 인스턴스에 배포됩니다. 최소 두 개의 노드를 배포해야 합니다. 노드당 시간당 리소스 사용량에 대해 매일 요금이 청구됩니다. 자세한 내용은 검색 노드 비용을 참조하세요.

샘플 데이터 세트를 이용해 Atlas Search 인덱스를 생성하고 Atlas Search 쿼리를 실행하는 실습을 해보고 싶다면, 다음 페이지의 튜토리얼을 참조하세요:

보면서 배우는 것을 선호하시나요?

Atlas 및 Atlas Search의 개요를 보고 데이터에 대한 Atlas Search 설정을 시작해 보세요. 이 동영상에서는 클러스터에 샘플 데이터를 로드하고, Atlas Search 인덱스를 만들고, Search TesterData Explorer를 사용하여 샘플 쿼리를 실행하는 방법을 보여 줍니다.

지속 시간 소요 시간: 10분

← MongoDB Atlas 검색이란 무엇인가요?