AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.
Docs Menu

쿼리 계획 및 실행 통계 검색 방법

MongoDB Search 쿼리는 explain 메서드가 활성화된 상태로 쿼리를 실행할 때 $search 쿼리 계획 및 실행 통계에 대한 정보를 반환합니다. explain(으)로 쿼리를 실행하면 MongoDB Search는 Lucene에서 쿼리가 내부적으로 어떻게 실행되었는지를 설명하는 통계 및 메타데이터가 포함된 BSON 문서를 반환합니다.

팁

플레이그라운드에서 쿼리 계획 시각화

MongoDB Search 플레이그라운드를 사용하여 explain 계획 요약을 생성하고 봅니다.

db.<myCollection>.explain("<verbosity>").aggregate([
{
$search: {
"<operator>": {
"<operator-options>"
}
}
}
])

상세 모드 explain 의 동작과 반환되는 정보의 양을 제어합니다. 값은 상세도가 낮은 순서대로 다음 중 하나일 수 있습니다.

쿼리에 대한 실행 쿼리 가 포함된 stats 필드를 포함한 쿼리 계획 에 대한 정보입니다. 계획 선택 중에 캡처한 부분 실행 데이터를 포함합니다.

쿼리에 대한 실행 통계가 포함된 stats 필드를 포함한 쿼리 계획에 대한 정보입니다.

queryPlanner(기본값)

쿼리 계획에 대한 정보입니다. 쿼리에 대한 실행 통계를 포함하는 stats 필드는 포함되지 않습니다.

explain 메서드를 사용한 쿼리는 stages.$_internalSearchMongotRemote 객체에서 다음 필드를 반환합니다.

옵션
유형
목적

mongotQuery

문서

실행한 쿼리를 포함합니다.

explain

문서

Contains the explain results. To learn more, see Explain Results.

internalMongotBatchSizeHistory

정수 배열

각 배치의 문서 크기를 포함하여 mongot가 mongod에 반환한 내용입니다.

explain 메서드는 explain 문서에 다음 필드가 포함된 BSON 문서를 반환합니다.

옵션
유형
필요성
목적

collectors

문서

옵션

수집기의 실행 통계를 설명합니다. indexPartitionExplain이 존재하는 경우 이는 최상위 레벨이 아닌 각 indexPartitionExplain 내에 중첩됩니다.

highlight

문서

옵션

쿼리의 하이라이트 실행에 대한 세부 정보입니다. 쿼리에서 하이라이트를 지정한 경우에만 반환됩니다.

indexPartitionExplain

문서 배열

옵션

인덱스 파티션별 세부 정보를 포함합니다. 두 개 이상의 인덱스 파티션을 구성한 경우에만 반환됩니다.

metadata

문서

옵션

유용한 메타데이터를 포함합니다.

query

문서

옵션

쿼리의 실행 통계를 설명합니다. 반환되지 않습니다. indexPartitionExplain이 존재하는 경우 이는 최상위 레벨이 아닌 각 indexPartitionExplain 내에 중첩됩니다.

resultMaterialization

문서

옵션

쿼리 실행 후 Lucene에서 문서별 데이터를 검색하는 것과 관련된 세부 정보입니다. queryPlanner 상세 수준 모드에서는 반환되지 않습니다.

resourceUsage

문서

옵션

쿼리가 실행되었을 때 쿼리의 리소스 사용량 세부 정보를 제공합니다. queryPlanner 상세 수준 모드에서는 반환되지 않습니다.

collectors BSON 문서에는 다음과 같은 필드가 있습니다.

필드
유형
필요성
목적

allCollectorStats

문서

필수 사항

Statistics of all collectors of the query. Statistics reported represent either the maximum value across all collectors used in the query or a sum of the statistic across all the sub-collectors. The timing statistics are summed to reflect the total time spent across all collectors for the entire query. To learn more, see allCollectorStats.

facet

문서

옵션

Breakdown of the query that specifies facet. To learn more, see facet.

sort

문서

옵션

Breakdown of the query that specifies sort. To learn more, see sort.

allCollectorStats BSON 문서는 쿼리에 지정된 모든 수집기의 수집기 통계를 facet 및 sort을(를) 포함하여 설명합니다. 다음과 같은 키가 포함되어 있습니다.

필드
설명

collect

수집기가 수집한 결과의 지속 시간과 수량을 추적합니다.

competitiveIterator

수집기에서 competitiveIterator가 요청된 총 지속 시간과 횟수를 추적하는 통계입니다.

setScorer

수집기에 설정된 점수 계산기의 총 지속 시간과 횟수를 추적하는 통계입니다.

facet은 쿼리에서 패싯을 지정할 때 쿼리 및 실행 통계를 상세히 설명하는 BSON 문서입니다. 다음 필드를 포함합니다.

옵션
유형
필요성
목적

collectorStats

문서

옵션

facet 수집기에 대한 통계만 표시합니다. 여기의 키는 allCollectorStats와 동일합니다. 쿼리에서 sort를 사용한 경우 이를 통해 allCollectorStats와의 차이를 평가하여 sort 수집기의 실행 통계를 결정할 수 있습니다.

createCountsStats

문서

옵션

모든 패싯 그룹을 보유하는 내부 Lucene 객체 생성과 관련된 통계를 표시합니다. generateFacetCounts 필드를 포함하며 이는 mongot가 모든 패싯과 그 수를 보유하는 Lucene 객체를 생성하는 총 지속 시간과 횟수를 추적하는 통계를 반환합니다.

stringFacetFieldCardinalities

문서

필수 사항

쿼리와 일치하는 문서 및 전체 Lucene 인덱스에 대해 패싯 처리된 필드를 해당 카디널리티에 매핑합니다. 각 필드에 대해 다음과 같은 카디널리티 정보를 제공합니다.

  • queried - 쿼리된 모든 문서에서 필드의 패싯 카디널리티를 나타냅니다.

  • total - 인덱스의 모든 문서에서 필드의 패싯 카디널리티를 나타냅니다.

sort는 쿼리에서 정렬을 지정할 때 쿼리 및 실행 통계를 상세히 설명하는 BSON 문서입니다. 다음 필드를 포함합니다.

옵션
유형
필요성
목적

stats

문서

옵션

모든 정렬 필드에서 sort 실행과 관련된 통계를 추적합니다. 다음 필드를 포함합니다.

  • comparator - Lucene이 결과를 정렬하는 방식에 대한 통계 및 메타데이터를 보여줍니다.

    • setBottom - 현재 경쟁률이 가장 낮은 정렬 값이 더 새롭고 더 경쟁적인 값으로 업데이트되는 빈도를 반환합니다. MongoDB Search는 정렬 시 최하위 값을 추적 하며, 새 값이 관련성 또는 경쟁력 면에서 현재 최하위 값을 초과하면 이 메트릭이 증가합니다.

    • compareBottom - 현재 bottom 값과 후보 bottom 값을 비교하는 것과 관련된 타이밍 및 호출 통계를 반환합니다.

    • compareTop - 현재 top 값과 후보 top 값을 비교하는 것과 관련된 타이밍 및 호출 통계를 반환합니다.

    • setHitsThresholdReached - 최대 결과 수(limit)에 도달했을 때와 관련된 타이밍 및 호출 통계를 반환합니다.

    • competitiveIterator - 정렬된 결과에서 상위 순위를 차지할 가능성이 있는 문서만을 반복하는 것과 관련된 타이밍 및 호출 통계를 반환합니다.

    • setScorer - 문서의 점수 및 관련성 계산과 관련된 타이밍 및 호출 통계를 반환합니다.

  • prunedResultIterator - Lucene의 competitiveIterator에서 nextDoc 및 advance 메서드 호출의 호출 및 타이밍 통계를 보여줍니다.

    혼합 데이터 유형 정렬을 수행하는 경우 이는 출력에 나타나지 않습니다.

    nextDoc 필드만 포함합니다.

fieldInfos

문서

필수 사항

정렬되는 필드를 해당 필드의 인덱스에 존재하는 데이터 유형 목록에 매핑합니다.

usesIndexSort

부울

옵션

쿼리가 인덱스 정렬의 이점을 받을 수 있는지 여부를 나타냅니다. 쿼리의 정렬 필드가 인덱스 정렬과 일치하거나 인덱스 정렬의 접두어를 형성하는 경우 쿼리가 이점을 받습니다. 값이 다음과 같은 경우:

  • true, 쿼리 정렬된 인덱스 최적화를 사용할 수 있습니다.

  • false, 쿼리는 정렬된 인덱스 최적화의 이점을 누릴 수 없습니다.

쿼리에 정렬이 지정되지 않거나 인덱스에 정렬 사양이 없는 경우 출력에 이것이 없습니다.

highlight는 쿼리에 강조 표시를 지정할 때 쿼리 및 실행 통계를 자세히 설명하는 BSON 문서입니다. 다음 필드를 포함합니다.

옵션
유형
필요성
목적

resolvedHighlightPaths

List<String>

필수 사항

강조 표시된 모든 필드의 목록입니다. 쿼리의 highlight 섹션에 와일드카드 경로를 지정한 경우 완전히 해결된 문서 경로 목록을 포함합니다.

stats

QueryExecutionArea

옵션

강조 표시 설정 및 실행과 관련된 호출 및 타이밍 통계입니다. 다음 필드를 포함합니다.

  • setupHighlight - executeHighlight 단계에서 사용된 내부 Lucene 객체를 설정하는 데 소요된 시간입니다.

  • executeHighlight - 일치하는 문서에 강조 표시를 실행하는 데 걸린 시간입니다.

the indexPartitionExplain contains Explain Results for each index partition. The top-level collectors and query are inside the explain information of each index partition and absent at the top-level.

metadata는 다음과 같은 유용한 메타데이터를 포함합니다.

필드
유형
필요성
목적

mongotVersion

문자열

옵션

mongot의 현재 버전입니다.

mongotHostName

문자열

옵션

mongot 호스트를 식별하는 사람이 읽을 수 있는 레이블입니다.

indexName

문자열

옵션

쿼리 에 사용된 MongoDB Search 인덱스 .

cursorOptions

문서

옵션

mongot에 커서 옵션이 제공됩니다.

totalLuceneDocs

Integer

옵션

삭제된 문서를 포함한 인덱스 내 전체 객체 수입니다.

query BSON 문서는 쿼리 실행 통계를 설명합니다. 다음 필드를 포함합니다.

필드
유형
필요성
목적

path

문자열

옵션

연산자의 경로(루트가 아닌 경우에만).

type

문자열

필수 사항

MongoDB Search 연산자 생성한 루센 쿼리의 이름입니다. 자세한 내용은 query 를 참조하세요.

analyzer

문자열

옵션

쿼리 와 함께 사용되는 MongoDB Search 분석기 .

args

문서

필수 사항

Lucene 쿼리 정보입니다. 자세한 내용은 query를 참조하세요.

stats

문서

옵션

stats for the query if explain ran with executionStats or allPlansExecution verbosity.

The explain response of a search command contains information about the query executed with that command. The response in the args field includes structured details of what Lucene queries MongoDB Search executed to satisfy a $search query.

이 섹션에는 다음이 포함됩니다.

  • MongoDB Search 연산자가 생성하는 일부 루센 쿼리

  • 구조화된 요약에 포함된 루센 쿼리 옵션

  • 각 루센 쿼리 유형에 대한 루센 쿼리 구조화된 요약 예시

참고

예시 정보

The examples in this section are based on queries run against the sample datasets with the queryPlanner verbosity mode. In the example response, the:

  • mongotQuery 필드 MongoDB Search 연산자 와 실행 된 쿼리 표시됩니다.

  • explain.type 필드에는 연산자가 만든 루센 쿼리가 표시됩니다.

전체 예시를 보려면 예시를 참조하세요.

BooleanQuery

루센 BooleanQuery의 경우 구조화된 요약에 다음 옵션에 대한 세부 정보가 포함되어 있습니다.

필드
유형
필요성
설명

must

옵션

일치해야 하는 절입니다.

mustNot

옵션

일치해서는 안 되는 절.

should

옵션

일치해야 하는 절입니다.

filter

옵션

모두 일치해야 하는 절.

minimumShouldMatch

Integer

옵션

일치해야 하는 should 절의 최소 수.

다음 예제에서는 sample_airbnb.listingsAndReviews 컬렉션에 대해 실행되는 쿼리에 대한 explain 응답을 보여줍니다.

1{
2 "stages" : [
3 {
4 "$_internalSearchMongotRemote" : {
5 "mongotQuery" : {
6 "compound" : {
7 "must" : [ {
8 "compound" : {
9 "should" : [ {
10 "text" : {
11 "query" : "historic",
12 "path" : "summary"
13 }
14 },
15 {
16 "text" : {
17 "query" : "Portugal",
18 "path" : "address.country"
19 }
20 },
21 {
22 "text" : {
23 "query" : "railway",
24 "path" : "transit"
25 }
26 } ]
27 }
28 } ],
29 "mustNot" : [ {
30 "text" : {
31 "query" : "Apartment",
32 "path" : "property_type"
33 }
34 } ]
35 }
36 },
37 "explain" : {
38 "type" : "BooleanQuery",
39 "args" : {
40 "must" : [ {
41 "path" : "compound.must",
42 "type" : "BooleanQuery",
43 "args" : {
44 "must" : [ ],
45 "mustNot" : [ ],
46 "should" : [
47 {
48 "path" : "compound.must.compound.should[0]",
49 "type" : "TermQuery",
50 "args" : {
51 "path" : "summary",
52 "value" : "historic"
53 }
54 },
55 {
56 "path" : "compound.must.compound.should[1]",
57 "type" : "TermQuery",
58 "args" : {
59 "path" : "address.country",
60 "value" : "portugal"
61 }
62 },
63 {
64 "path" : "compound.must.compound.should[2]",
65 "type" : "TermQuery",
66 "args" : {
67 "path" : "transit",
68 "value" : "railway"
69 }
70 }
71 ],
72 "filter" : [ ],
73 "minimumShouldMatch" : 0
74 }
75 } ],
76 "mustNot" : [ {
77 "path" : "compound.mustNot",
78 "type" : "TermQuery",
79 "args" : {
80 "path" : "property_type",
81 "value" : "apartment"
82 }
83 } ],
84 "should" : [ ],
85 "filter" : [ ],
86 "minimumShouldMatch" : 0
87 }
88 }
89 },
90 ...
91 },
92 ...
93 ],
94 ...
95}
ConstantScoreQuery

상수 점수 쿼리의 경우 구조화된 요약에는 다음 옵션에 대한 세 부정보가 포함됩니다.

필드
유형
필요성
설명

query

필수 사항

ConstantScoreQuery의 자식.

FunctionScoreQuery

루센 FunctionScoreQuery 쿼리의 경우 구조화된 요약에 다음 옵션에 대한 세부 정보가 포함되어 있습니다.

필드
유형
필요성
설명

scoreFunction

문자열

필수 사항

쿼리에 사용된 점수 표현식입니다.

query

필수 사항

쿼리.

LatLonPointDistanceQuery

For Lucene LatLonPointDistanceQuery queries, the response contains an stats only.

LatLonShapeQuery

For Lucene LatLonShapeQuery queries, the response contains an stats only.

LongDistanceFeatureQuery

For Lucene LongDistanceFeatureQuery, the response contains an stats only.

MultiTermQueryConstantScoreWrapper

루센 MultiTermQueryConstantScoreWrapper 쿼리의 경우 구조화된 요약에는 다음 인수에 대한 세부 정보가 포함되어 있습니다.

필드
유형
필요성
설명

queries

필수 사항

쿼리 목록.

PhraseQuery

루센 PhraseQuery 쿼리의 경우 구조화된 요약에는 다음 인수에 대한 세부 정보가 포함되어 있습니다.

필드
유형
필요성
설명

path

문자열

필수 사항

검색할 인덱싱된 필드입니다.

query

문자열

필수 사항

검색할 문자열 또는 문자열을 입력합니다.

slop

번호

필수 사항

query 구문에서 단어 간 허용 거리입니다.

PointRangeQuery

루센 PointRangeQuery 쿼리의 경우 구조화된 요약에는 다음 인수에 대한 세부 정보가 포함되어 있습니다.

필드
유형
필요성
설명

path

문자열

필수 사항

검색할 인덱싱된 필드입니다.

representation

문자열

옵션

숫자 표현. 날짜로 입력된 데이터에 대한 쿼리에는 숫자 표현이 포함되지 않음.

gte

번호

옵션

쿼리의 하한값.

lte

번호

옵션

쿼리의 상한.

TermQuery

용어 쿼리의 경우 구조화된 요약에는 다음 인수에 대한 세부 정보가 포함되어 있습니다.

필드
유형
필요성
설명

path

문자열

필수 사항

검색할 인덱싱된 필드입니다.

value

문자열

필수 사항

검색할 문자열입니다.

Default

다른 루센 쿼리에서 명시적으로 정의되지 않은 루센 쿼리는 기본 쿼리를 사용하여 직렬화됩니다. 구조화된 요약에는 다음 옵션에 대한 세부 정보가 포함되어 있습니다.

필드
유형
필요성
설명

queryType

문자열

필수 사항입니다.

루씬 쿼리 유형.

The explain response for executionStats and allPlansExecution verbosity modes includes a stats field that contains information on how much time a query spends in various stages of query execution.

타이밍 분석은 쿼리 실행 영역 과 관련된 실행 통계를 설명합니다. 다음 필드에는 타이밍 분석이 표시됩니다.

필드
유형
설명

millisElapsed

Long

쿼리의 이 영역에서 보낸 시간을 포함하여 하위 항목이 이 영역에서 작업을 수행하는 데 경과된 대략적인 벽시계 시간입니다. 이 값은 이 영역에서 작업을 수행하는 동안 경과한 대략적인 밀리초 숫자입니다.

invocationCounts

문서

Number of invocations of tasks included in this area. The value is a map of task names to their invocation count.

다음 쿼리 영역에 대한 통계를 사용할 수 있습니다.

옵션
설명

context

Lucene 쿼리 실행과 관련된 통계입니다. 이 영역에서 호출 횟수가 열거되는 두 가지 작업이 있습니다.

  • createScorer: Scorer는 문서를 반복하고 각 문서에 대한 점수를 생성합니다. createScorer을(를) 호출하면 점수 매기기를 담당하는 객체가 생성됩니다. 이 작업과 관련된 시간은 실제로 문서 점수를 매기는 데 소요된 시간이 아닙니다. 개수에는 scorerSupplier 호출 수가 포함됩니다.

  • createWeight가중치는 쿼리 및 IndexSearcher 과 관련된 상태를 저장. 개수에는 createWeight 호출 수가 포함됩니다.

The time spent in this area is related to the structure of the query, and is not based on the number of results that are iterated through and scored.

예를 들면 다음과 같습니다.

"context" : {
"millisElapsed" : NumberDouble(4.934751),
"invocationCounts" : {
"createWeight" : NumberLong(1),
"createScorer" : NumberLong(10)
}
}

match

결과 문서를 반복하고 일치시키는 것과 관련된 통계입니다. 이 통계는 어떤 문서가 다음 일치 항목인지 결정하는 데 걸리는 시간을 보여줍니다. 결과 일치에 소요되는 시간은 쿼리의 특성에 따라 크게 달라질 수 있습니다. 이 영역에서 호출 횟수가 열거되는 두 가지 작업이 있습니다.

  • nextDoc: 결과 집합의 다음 문서로 이동하기 위한 요청입니다. 여기에는 건너뛰기 식별 및 이동, 또는 다음 일치를 찾기 위해 필요한 기타 작업이 포함됩니다. 개수에는 nextDoc 및 advance 호출 횟수가 포함됩니다.

  • refineRoughMatch: 더 철저한 일치를 수행합니다. 일부 쿼리는 문서가 먼저 '대략' 일치하는 2단계 프로세스로 실행되고, 첫 번째 대략적인 일치를 충족한 후에만 두 번째, 보다 철저한 단계에서 확인됩니다. refineRoughMatch 작업은 2단계 프로세스의 두 번째 단계입니다. 개수에는 refineRoughMatch 호출 수가 포함됩니다.

예를 들면 다음과 같습니다.

"match" : {
"millisElapsed" : NumberDouble(4.901597),
"invocationCounts" : {
"nextDoc" : NumberLong(541),
"refineRoughMatch" : NumberLong(0)
}
}

score

결과 세트의 문서 점수 산정과 관련된 통계입니다. 이 영역에서 호출 횟수가 열거되는 두 가지 작업이 있습니다.

  • score: 결과 세트의 각 문서에 점수를 매깁니다. 개수에는 score 호출 수가 포함됩니다.

  • setMinCompetitiveScore: 점수가 주어진 값보다 낮은 문서를 무시합니다. 점수가 경쟁적이지 않은 일부 임계값보다 낮은 문서를 무시하여 쿼리가 수행되는 점수 산정 작업 수를 줄일 수 있었음을 나타냅니다. 개수에는 setMinCompetitiveScore 호출 수가 포함됩니다.

예를 들면 다음과 같습니다.

"score" : {
"millisElapsed" : NumberDouble(3.931312),
"invocationCounts" : {
"score" : NumberLong(536),
"setMinCompetitiveScore" : NumberLong(0)
}
}

resultMaterialization 문서는 mongot가 다음 작업을 수행하는 데 걸리는 시간을 보여줍니다.

  1. Lucene에 저장된 결과 데이터를 _id 또는 storedSource 형태로 검색합니다.

  2. mongod에 보내기 전에 데이터를 BSON 형식으로 직렬화합니다.

To learn more, see stats.

resourceUsage 문서는 쿼리 실행에 사용된 리소스를 보여줍니다. 다음 필드를 포함합니다.

필드
유형
필요성
목적

majorFaults

Long

필수 사항

쿼리 실행 중 시스템이 메모리에서 필요한 데이터를 찾지 못해 디스크와 같은 백업 저장소에서 읽게 될 때 발생하는 주요 페이지 폴트 수입니다.

minorFaults

Long

필수 사항

데이터가 페이지 캐시에 있지만 아직 프로세스의 페이지 테이블에 매핑되지 않은 경우 발생하는 경미한 페이지 폴트의 수입니다.

userTimeMs

Long

필수 사항

사용자 공간에서 소요된 CPU 시간(밀리초)입니다.

systemTimeMs

Long

필수 사항

시스템 공간에서 소요된 CPU 시간(단위: 밀리초)입니다.

maxReportingThreads

Integer

필수 사항

모든 배치에서 쿼리 실행 중 mongot가 사용한 최대 스레드 수입니다. 동시 실행되지 않는 설명 쿼리의 경우 값은 1입니다.

numBatches

Integer

필수 사항

쿼리 처리 시 요청된 mongot의 총 배치 수입니다.

다음 예시에서는 sample_mflix 데이터베이스의 movies 컬렉션을 사용합니다.

팁

If you've already loaded the sample dataset, refer to the MongoDB Search Quick Start tutorial to create an index definition and run MongoDB Search queries.

다음 예시에서는 다양한 연산자를 사용하여 allPlansExecution 상세 수준 모드로 title 필드를 쿼리합니다.

db.movies.explain("allPlansExecution").aggregate([
{
$search: {
"text": {
"path": "title",
"query": "yark",
"fuzzy": {
"maxEdits": 1,
"maxExpansions": 100,
}
}
}
}
])

다음 예시에서는 다양한 연산자를 사용하여 queryPlanner 상세 수준 모드로 title 필드를 쿼리합니다.

db.movies.explain("queryPlanner").aggregate([
{
$search: {
"text": {
"path": "title",
"query": "yark",
"fuzzy": {
"maxEdits": 1,
"maxExpansions": 100,
}
}
}
}
])

For queries that specify a $limit stage in the pipeline, the explain results include the mongotDocsRequested metric, which shows the number of documents that mongod requested from mongot.

예시

{
"mongotQuery": {},
"explain": {},
"limit": <int>,
"sortSpec": {},
"mongotDocsRequested": <int>,
}

The following example uses the autocomplete to query the title field with the executionStats verbosity mode.

1db.movies.explain("executionStats").aggregate([
2 {
3 "$search": {
4 "autocomplete": {
5 "path": "title",
6 "query": "pre",
7 "fuzzy": {
8 "maxEdits": 1,
9 "prefixLength": 1,
10 "maxExpansions": 256
11 }
12 }
13 }
14 }
15])

explain 응답 요소에 대한 자세한 내용은 Explain 결과를 참조하세요.