MongoDB Atlas Search 빠른 검색 기능
KUKJIN LEE • 2주 전 작성
MongoDB Atlas Search란?
MongoDB Atlas Search는 Atlas에서 제공하는 완전 관리형, 내장형 검색 엔진입니다. Elasticsearch와 비슷한 Lucene 기반으로 구축되어 있으며, MongoDB 데이터베이스에 직접 통합되어 빠른 검색을 제공하는 것이 특징입니다. 이를 통해 복잡한 텍스트 검색 기능을 MongoDB에서 바로 구현할 수 있습니다.
MongoDB Atlas Search의 장점
-
내장형 검색 엔진: MongoDB에서 데이터를 별도로 내보내지 않아도 빠른 검색을 실행 가능
-
복잡한 검색 가능: 텍스트 검색, 필터링, 점수화, 정렬, 자동 완성 등 강력한 검색 기능 제공
-
관리 편의성: MongoDB Atlas UI에서 직접 설정 및 관리 가능
-
확장성: 다양한 데이터 크기와 복잡도에 맞게 자동으로 확장 가능
Atlas Search 인덱스 설정하기
Atlas Search를 사용하려면 먼저 인덱스를 설정해야 합니다.
-
MongoDB Atlas 클러스터에 접속하여 Database > Collections로 이동.
-
원하는 컬렉션에서 “Search Index” 탭 선택.
-
새로운 인덱스를 생성하고, 설정에 따라 필드 매핑을 합니다.
-
예를 들어, 텍스트 기반 검색을 위해서는
dynamic
템플릿을 사용하거나 특정 필드에 Lucene 분석기를 설정할 수 있습니다.
Node.js 코드로 Atlas Search 활용하기
인덱스를 설정한 후, 이제 Node.js 코드를 통해 검색 쿼리를 실행할 수 있습니다.
async function searchDocuments(collection, searchQuery) {
const searchResults = await collection.aggregate([
{
$search: {
index: "default",
text: {
query: searchQuery,
path: ["title", "description"] // 검색할 필드
}
}
},
{ $limit: 10 } // 결과 제한
]).toArray();
console.log(searchResults);
}
async function main() {
try {
await client.connect();
const database = client.db("GG");
const collection = database.collection("users");
await searchDocuments(collection, "search term");
} finally {
await client.close();
}
}
다양한 Atlas Search 쿼리 활용법
MongoDB Atlas Search는 다양한 쿼리 연산자를 제공합니다.
-
text: 텍스트 검색
-
autocomplete: 자동 완성 기능
-
range: 숫자 및 날짜 범위 필터
-
facet: 여러 검색 필드에 대한 필터링 및 그룹화
MongoDB Atlas Search 성능 최적화 팁
-
적절한 인덱스 설정: 필요 없는 필드는 인덱스에서 제외하여 성능 최적화.
-
최소한의 데이터 반환:
$project
를 사용하여 필요한 필드만 반환. -
검색 결과 제한:
$limit
로 불필요한 데이터를 많이 검색하지 않도록 설정. -
빈번한 쿼리 캐싱: Redis 같은 캐시 시스템을 활용하여 인기 쿼리 캐싱.