조회 집계
집계를 사용하여 쿼리 요청에 의해 반환된 결과를 그룹화, 분석 또는 비교할 수 있습니다.
집계는 쿼리 API에서 지정할 수 있는 aggregation 매개변수로 정의됩니다. 집계 매개변수의 입력은 동일한 쿼리 요청에서 별도의 매개변수로 지정된 query, filter 또는 natural_language_query 매개변수에서 반환되는 문서 집합입니다. 그렇지 않으면 프로젝트의 모든 문서에 집계가 적용됩니다.
집계를 사용하여 결과 문서 집합의 값에서 계산을 수행할 수 있습니다. 예를 들어 쿼리 결과로 반환되는 문서의 order.total 필드에서 가장 높은 달러 금액에 대한 정보를 얻으려면 max(order.total) 를 aggregation 매개변수 값으로 사용합니다.
집계 매개변수는 가장 높은 값을 가진 필드에 대한 데이터를 반환합니다.
"aggregations": [
{
"type": "max",
"field": "order.total",
"value": 100668.00
}
]
문서 그룹화
계산을 수행하는 것 외에도 집계를 사용하여 결과 집합에서 특정 값과 일치하는 문서를 그룹화하여 카운트하거나 더 자세히 분석할 수 있습니다. 예를 들어 집계를 사용하여 brake 이라는 용어가 언급된 문서에 대한 교통 사고 보고서 집합을 검색할 수 있습니다. 그리고 반환된 문서에서 해당 용어가 가장 많이 언급된 미국 주에서 발행된 보고서를 찾아보세요.
다음 예제 요청에서는 예제를 더 쉽게 따라할 수 있도록 집계 결과를 3개만 반환하는 카운트 매개변수가 포함되어 있습니다.
{
"query":"brake",
"aggregation": "term(field:STATE,count:3,relevancy:true)"
}
집계 매개변수의 출력은 쿼리 결과가 포함된 aggregations 개체 앞에 표시되는 results 개체에 반환됩니다. 단일 쿼리에 대해 aggregations 개체에서 최대 50,000개의 값을 반환할 수 있습니다.
결과 aggregations 개체에는 쿼리 결과에 대한 요약 정보가 포함되어 있습니다. 예를 들어 이 예에서는 뉴욕, 캘리포니아 및 플로리다의 교통 사고 보고서에서 brake 라는 용어가 가장 관련성이 높은 언급이 있음을 보여줍니다.
{
"matching_results": 9064,
"retrieval_details": {
"document_retrieval_strategy": "untrained"
},
"aggregations": [
{
"type": "term",
"field": "STATE",
"results": [
{
"key": "NY",
"matching_results": 693,
"relevancy": 1.1649531567631084,
"total_matching_documents": 2156,
"estimated_matching_results": 542
},
{
"key": "CA",
"matching_results": 1210,
"relevancy": 1.1170819184294765,
"total_matching_documents": 4017,
"estimated_matching_results": 1011
},
{
"key": "FL",
"matching_results": 511,
"relevancy": 0.828014956418841,
"total_matching_documents": 2199,
"estimated_matching_results": 553
}
]
}
],
"results": []
집계 유형 결합
쿼리 결과를 분석하거나 그룹화하는 데 사용할 수 있는 다양한 유형의 집계가 있습니다. 또한 요청에 둘 이상의 집계를 결합하여 보다 타겟팅된 분석을 수행할 수 있습니다.
다음 예는 두 개의 용어 연산자로 구성된 요청을 보여줍니다. 첫 번째 용어 집계는 입력 문서를 미국 주 값별로 그룹화하고 3개의 그룹을 선택합니다. 두 번째 용어 집계는 이 세 그룹 각각에 적용되며 CITY 값을 기준으로 그룹화합니다. 이러한 CITY 하위 그룹은 STATE 그룹당 2개만 반환됩니다.
관련성 매개변수는 결과를 더 쉽게 읽을 수 있도록 제외됩니다.
{
"query":"brake",
"aggregation": "term(field:STATE,count:3).term(field:CITY,count:2)"
}
응답에는 각 주의 도시 정보가 포함되어 있습니다.
{
"matching_results": 9064,
"retrieval_details": {
"document_retrieval_strategy": "untrained"
},
"aggregations": [
{
"type": "term",
"field": "STATE",
"count": 3,
"results": [
{
"key": "CA",
"matching_results": 1210,
"aggregations": [
{
"type": "term",
"field": "CITY",
"count": 2,
"results": [
{
"key": "LOS ANGELES",
"matching_results": 77
},
{
"key": "SAN DIEGO",
"matching_results": 66
}
]
}
]
},
{
"key": "NY",
"matching_results": 693,
"aggregations": [
{
"type": "term",
"field": "CITY",
"count": 2,
"results": [
{
"key": "BROOKLYN",
"matching_results": 35
},
{
"key": "NEW YORK",
"matching_results": 21
}
]
}
]
},
{
"key": "FL",
"matching_results": 511,
"aggregations": [
{
"type": "term",
"field": "CITY",
"count": 2,
"results": [
{
"key": "JACKSONVILLE",
"matching_results": 33
},
{
"key": "TAMPA",
"matching_results": 29
}
]
}
]
}
]
}
],
"results": []
집계를 지정하는 순서가 중요합니다. 예를 들어, 이전 예제에서 용어 집계 순서를 반대로 하면 다른 결과가 나옵니다.
{
"query":"brake",
"aggregation": "term(field:CITY,count:3).term(field:STATE,count:1)"
}
새 순서는 이전 결과 집합에 포함되지 않았던 도시인 시카고를 표시하는 결과를 생성합니다. 주별로 그룹화하여 요청을 시작하면 교통 사고 신고 건수가 많은 도시가 한 곳뿐인 일리노이주는 결과에 포함되지 않습니다. 뉴욕과 플로리다는 두 개 이상의 도시에서 사건 보고가 많았기 때문에 주 전체에서 더 많은 수의 일치 항목이 발생하여 반환되었습니다. 먼저 도시별로 그룹화하면 결과가 달라집니다.
{
"matching_results": 9064,
"retrieval_details": {
"document_retrieval_strategy": "untrained"
},
"aggregations": [
{
"type": "term",
"field": "CITY",
"count": 4,
"results": [
{
"key": "LOS ANGELES",
"matching_results": 77,
"aggregations": [
{
"type": "term",
"field": "STATE",
"count": 1,
"results": [
{
"key": "CA",
"matching_results": 77
}
]
}
]
},
{
"key": "SAN DIEGO",
"matching_results": 66,
"aggregations": [
{
"type": "term",
"field": "STATE",
"count": 1,
"results": [
{
"key": "CA",
"matching_results": 66
}
]
}
]
},
{
"key": "CHICAGO",
"matching_results": 59,
"aggregations": [
{
"type": "term",
"field": "STATE",
"count": 1,
"results": [
{
"key": "IL",
"matching_results": 59
}
]
}
]
}
]
}
],
"results": []
집계를 사용하여 보강 탐색
term() 집계는 결과를 분석하여 문서에서 얼마나 많은 보강이 인식되는지 확인하는 데 특히 유용합니다. 예를 들어 필터링된 문서에서 각 엔터티 유형이 인식된 횟수를 계산하려면 다음 쿼리 매개변수를 제출하면 됩니다:
{
"filter": "enriched_text.entities:(text::Gilroy,type::Location)",
"aggregation": "term(enriched_text.entities.type)"
}
쿼리는 먼저 Location 유형의 엔티티가 하나 이상 있고 텍스트가 Gilroy 인 문서를 선택합니다. 이 작업은 문서 3개를 반환합니다. 그런 다음 반환된 문서에서 각 엔티티 유형이 나타나는 문서 수를 집계합니다.
{
"matching_results": 3,
"retrieval_details": {
"document_retrieval_strategy": "untrained"
},
"aggregations": [
{
"type": "term",
"field": "enriched_text.entities.type",
"results": [
{
"key": "Location",
"matching_results": 3
},
{
"key": "Person",
"matching_results": 3
},
{
"key": "Company",
"matching_results": 2
},
{
"key": "GeographicFeature",
"matching_results": 2
},
{
"key": "Organization",
"matching_results": 2
},
{
"key": "Quantity",
"matching_results": 2
},
{
"key": "Facility",
"matching_results": 1
},
{
"key": "PrintMedia",
"matching_results": 1
}
]
}
]
}
일치하는 3개의 문서에는 모두 Location 과 Person 엔티티 유형("matching_results": 3)이 있습니다. 그러나 일치하는 문서 중 2개만 Company 엔티티 유형을 가지고 있습니다.
기본적으로 관련성별로 정렬된 상위 10개 일치 항목이 반환됩니다. 집계에 count 매개변수를 추가하여 결과 수를 변경할 수 있습니다.
{
"filter": "enriched_text.entities:(text::Gilroy,type::Location)",
"aggregation": "term(enriched_text.entities.type,count:20)"
}
필터 추가하기
집계 절에 filter() 을 사용하여 결과를 필터링합니다. 예를 들어 이전 예제에서 별도로 제출한 것과 동일한 필터를 aggregation 절에 직접 지정할 수 있습니다.
{
"aggregation": "filter(enriched_text.entities:(text::Gilroy,type::Location)).term(enriched_text.entities.type)"
}
이 경우 filter().term() 집계는 별도의 filter 및 aggregation 절을 사용한 이전 예제와 동일한 결과를 찾습니다. 그러나 filter 절을 사용하면 결과의 순위가 달라집니다. 다음 예제와 같이 filter() 절 내에 aggregation 절을 사용하여 일련의 표현식에서
결과를 필터링하면 이 차이를 활용할 수 있습니다.
중첩된 개체부터 시작하기
이전 예제에서 "matching_counts" 값은 필터 및 집계와 일치하는 문서 수를 나타냅니다. 쿼리 응답에 얼마나 많은 nested 객체가 있는지 계산하고 싶을 수 있습니다. nested() 집계를 사용하면 다른 집계 용어의 입력으로 사용되는 문서 집합을 변경할 수 있습니다.
예를 들어 다음 쿼리에서 nested() 세그먼트는 enriched_text.entities 중첩 개체를 모두 filter() 및 term() 세그먼트에서 사용하는 입력으로 선택합니다.
{
"aggregation": "nested(enriched_text.entities).filter(enriched_text.entities.type::Organization).term(enriched_text.entities.text,count:3)"
}
쿼리는 다음과 같이 보이는 aggregations 개체를 반환합니다:
{
"aggregations": [
{
"type": "nested",
"path": "enriched_text.entities",
"matching_results": 1993,
"aggregations": [
{
"type": "filter",
"match": "enriched_text.entities.type::Organization",
"matching_results": 645,
"aggregations": [
{
"type": "term",
"field": "enriched_text.entities.text",
"count": 3,
"results": [
{
"key": "IBM",
"matching_results": 36
},
{
"key": "Docker",
"matching_results": 12
},
{
"key": "OpenShift",
"matching_results": 12
}
]
}
]
}
]
}
]
}
쿼리의 nested() 세그먼트에서 1993개의 enriched_text.entities 중첩된 개체를 찾았습니다. 이러한 개체에 필터를 적용한 결과 enriched_text.entities 유형의 645개 Organization 가 발견되었습니다.
터미널 작업
대부분의 집계 유형에서 여러 집계 연산을 사용하여 쿼리를 구성하면 첫 번째 연산이 문서에 적용됩니다. 그런 다음 해당 작업의 출력이 다음 작업의 입력으로 사용됩니다. 그러나 집계 유형의 하위 집합은 터미널 작업입니다. 터미널 작업의 출력은 다음 집계를 위한 입력으로 사용되지 않습니다. 대신, 출력은 불연속형 그룹으로 반환됩니다.
집계 유형을 결합하고 터미널 연산을 수행하는 집계를 포함하는 요청의 예는 average 집계 유형에 대한 두 번째 예제 를 참조하세요.
집계 유형
다음 유형의 집계가 지원됩니다:
문서 검색 프로젝트 유형의 경우 쿼리 요청에 집계 매개변수를 포함하지 않으면 기본 집계 요청이 적용됩니다. 자세한 내용은 문서 검색 프로젝트 집계 를 참조하세요.
쿼리를 제출하는 방법에 대한 자세한 내용은 Discovery API 참조를 참조하세요.
평균
일치하는 모든 문서 전반에 지정된 필드의 평균값을 리턴합니다.
구문
average(field)
예
| 제품 | 가격 |
|---|---|
| I 시리즈 | 2억 |
| J 시리즈 | 450 |
| X 시리즈 | 325 |
average 집계 유형이 price 필드에 표 1에 표시된 값이 포함된 문서 집합에 적용되면 결과는 325 이 됩니다.
average(price)=325
이 집계 유형은 터미널 작업을 수행합니다. 다른 집계와 결합할 경우 출력은 다음 집계를 위한 입력으로 사용되지 않습니다. 출력은 불연속형 그룹으로 반환됩니다.
{
"query":"brake",
"aggregation": "term(field:STATE,count:3).average(field:VEH_SPEED).term(field:CITY,count:2)"
}
첫 번째 term 집계 작업에서 반환된 각 상태에 대해 응답은 인시던트 보고서에 지정된 평균 차량 속도를 표시합니다. 두 번째 term 집계는 term 집계가 아닌 첫 번째 average 집계의 출력을 입력으로 사용한다는 점에 유의하세요.
{
"matching_results": 9064,
"retrieval_details": {
"document_retrieval_strategy": "untrained"
},
"aggregations": [
{
"type": "term",
"field": "STATE",
"count": 3,
"results": [
{
"key": "CA",
"matching_results": 1210,
"aggregations": [
{
"type": "average",
"field": "VEH_SPEED",
"value": 26.239653512993264
},
{
"type": "term",
"field": "CITY",
"count": 2,
"results": [
{
"key": "LOS ANGELES",
"matching_results": 77
},
{
"key": "SAN DIEGO",
"matching_results": 66
}
]
}
]
}
필터
그 앞에 오는 집계 쿼리의 문서 집합을 좁히는 한정자입니다.
구문
filter(field)
예
다음 예에서는 IBM 이 언급된 문서만 포함하도록 일치하는 문서 집합을 필터링합니다.
filter(enriched_text.entities.text:IBM)
다른 집계와 결합할 때 지정한 조건을 충족하는 문서만 포함하도록 설정된 일치하는 문서를 필터링합니다.
{
"query":"brake",
"aggregation": "filter(VEH_SPEED>50).term(field:STATE,count:3).term(field:CITY,count:2)"
}
쿼리 응답은 브레이크와 관련된 사고가 발생하고 차량 속도가 50을 초과하는 도시를 보여줍니다.
{
"matching_results": 9064,
"retrieval_details": {
"document_retrieval_strategy": "untrained"
},
"aggregations": [
{
"type": "filter",
"match": "VEH_SPEED>50",
"matching_results": 1075,
"aggregations": [
{
"type": "term",
"field": "STATE",
"count": 3,
"results": [
{
"key": "CA",
"matching_results": 176,
"aggregations": [
{
"type": "term",
"field": "CITY",
"count": 2,
"results": [
{
"key": "FONTANA",
"matching_results": 6
},
{
"key": "ALTA LOMA",
"matching_results": 5
}
]
}
]
}
group_by
결과를 사용자가 정의한 그룹으로 구분합니다.
구문
group_by(condition:[(condition 1),(condition 2)...])
각 조건은 괄호로 묶인 유효한 검색 쿼리 언어 표현식으로 지정해야 합니다. 예를 들어, (age<20) 또는 (flavor:chocolate)입니다. 정의할 수 있는 조건의 최대 개수는 50개입니다.
선택적으로 relevancy 매개 변수를 포함하고 true 로 설정하여 지정된 조건을 충족하는 문서 집합의 관련성 값을 반환할 수 있습니다. true 을 사용하면 결과가 관련성별로 정렬됩니다. false 인 경우 결과가 가장 많은 matching_results 를 기준으로 정렬됩니다.
예
다음 요청은 engine 이라는 용어가 언급된 문서를 찾아서 자동차 제조 연도별로 그룹화합니다. 문서는 2000년 이전에 제조된 차량과 관련된 교통 사고 보고서, 2000년 이후에 제조된 차량, 2000년 이후에 제조된 차량의 3개 그룹으로 분류되어 있습니다.
{
"query":"engine",
"aggregation": "group_by(condition:[(YEARTXT<2000),(YEARTXT=2000),(YEARTXT>2000)],relevancy:true)"
}
결과는 다음과 같습니다:
{
"type": "group_by",
"results": [
{
"key": "YEARTXT<2000",
"matching_results": 2034,
"relevancy": 1.0,
"total_matching_documents": 2034,
"estimated_matching_results": 2034
},
{
"key": "YEARTXT=2000",
"matching_results": 1738,
"relevancy": 1.0,
"total_matching_documents": 1738,
"estimated_matching_results": 1738
},
{
"key": "YEARTXT>2000",
"matching_results": 32708,
"relevancy": 1.0,
"total_matching_documents": 32708,
"estimated_matching_results": 32708
}
]
}
히스토그램
문서를 분류하는 숫자 간격 세그먼트를 작성합니다.
구문
histogram({field},{interval})
카테고리를 설명하기 위해 단일 숫자 필드에서 필드 값을 사용합니다. 히스토그램을 만드는 데 사용되는 필드에는 숫자 데이터 유형(예: integer, float, double 또는 date)이 있어야 합니다.
string 와 같은 숫자가 아닌 유형은 지원되지 않습니다. 예를 들어, "price": 1.30 는 숫자 값으로 작동하지만, "price": "1.30" 는 문자열이므로 작동하지 않습니다.
interval 인수를 사용하여 결과를 분할할 섹션의 크기를 정의합니다. 간격 값은 음수가 아닌 정수여야 합니다. 필드에서 일반적인 값을 세분화하는 데 적합한 값을 선택합니다.
히스토그램은 필드에 지정된 십진수 값을 처리할 수 있지만 간격은 정수여야 합니다.
선택적으로 name 매개변수를 포함하여 사용자 지정 이름을 포함할 수 있습니다.
예
예를 들어, 여러 항목의 가격이 포함된 데이터 세트( “price”: 1.30, “price”: 1.99, “price”: 2.99 )가 있다면, 1 간격으로 설정하면, 1 - 2, 2, 3 범위 안에 있는 모든 항목을 볼 수 있습니다. 모든 데이터가 동일한 세그먼트에서
끝나므로 100 의 간격을 사용하지 않으려는 것입니다.
histogram(product_price,interval:1)
최대
일치하는 모든 문서 전반에 지정된 필드의 최대값을 리턴합니다.
구문
max(field)
예
| 제품 | 가격 |
|---|---|
| I 시리즈 | 2억 |
| J 시리즈 | 450 |
| X 시리즈 | 325 |
max 집계 유형이 price 필드에 표 2에 표시된 값이 포함된 문서 집합에 적용되면 결과는 450 이 됩니다.
max(price)=450
이 집계 유형은 터미널 작업을 수행합니다. 다른 집계와 결합할 경우 출력은 다음 집계를 위한 입력으로 사용되지 않습니다. 출력은 불연속형 그룹으로 반환됩니다.
분
일치하는 모든 문서 전반에 지정된 필드의 최소값을 리턴합니다.
구문
min(field)
예
| 제품 | 가격 |
|---|---|
| I 시리즈 | 2억 |
| J 시리즈 | 450 |
| X 시리즈 | 325 |
min 집계 유형이 price 필드에 표 3에 표시된 값이 포함된 문서 집합에 적용되면 결과는 200 이 됩니다.
min(price)=200
이 집계 유형은 터미널 작업을 수행합니다. 다른 집계와 결합할 경우 출력은 다음 집계를 위한 입력으로 사용되지 않습니다. 출력은 불연속형 그룹으로 반환됩니다.
중첩됨
집계 쿼리 앞에 ' nested '를 적용하면 집계가 지정된 결과 영역으로 제한됩니다.
예를 들어, nested(enriched_text.entities) 는 모든 결과의 enriched_text.entities 구성 요소만 집계에 사용된다는 의미입니다.
다음 예에서는 모델 유형별로 얼마나 많은 멘션이 반환되는지 확인합니다.
nested(enriched_text.entities).term(enriched_text.entities.model_name)
그 결과 총 50개의 인식된 엔티티가 있으며 모두 NLU 유형인 것으로 나타났습니다.
"aggregations": [
{
"type": "nested",
"path": "enriched_text.entities",
"matching_results": 50,
"aggregations": [
{
"type": "term",
"field": "enriched_text.entities.model_name",
"results": [
{
"key": "natural_language_understanding",
"matching_results": 50
}
]
}
]
}
]
다른 예는 중첩된 객체로 시작하기 를 참조하세요.
쌍
두 필드 간의 관계를 분석합니다.
구문
pair(first:{aggregation},second:{aggregation})
첫 번째 및 두 번째 {aggregation} 값은 다음 집계 유형 중 하나여야 합니다:
termgroup_byhistogramtimeslice
term 또는 group_by 집계에서 relevancy 매개 변수는 무시됩니다. pair 집계 유형은 두 집계 결과에서 문서 세트의 조합을 사용하여 관련성 값을 계산합니다.
쿼리 요청당 하나의 쌍 집계만 사용할 수 있으며 다른 집계와 결합할 수 없습니다.
예
예를 들어 첫 번째 집계는 term(model_name) 로 지정하고 두 번째 집계는 term(component_name) 로 지정할 수 있습니다. 각 집계는 집계된 문서 집합의 키로 다음 값을 반환합니다:
- term(모델_이름): 어코드, CR-V
- term(component_name): 엔진, 브레이크, 라디에이터
각 문서 세트의 조합에 대해 계산된 연관성 값은 다음과 같이 보일 수 있습니다:
- 어코드 X 엔진
- 어코드 X 브레이크
- 어코드 X 라디에이터
- CR-V x 엔진
- CR-V x 브레이크
- CR-V x 라디에이터
응답은 집계 결과의 2차원 배열을 정의하며, 테이블로 표현할 수 있습니다.
| 자동차 모델 | 구성 요소: 엔진 | 구성 요소: 브레이크 | 구성 요소: 라디에이터 |
|---|---|---|---|
| 협정 | 어코드 X 엔진 | 어코드 X 브레이크 | 어코드 X 라디에이터 |
| CR-V | CR-V x 엔진 | CR-V x 브레이크 | CR-V x 라디에이터 |
테이블의 각 열 및 행 배열은 첫 번째 및 두 번째 집계 결과와 동일한 순서로 정렬됩니다. 예를 들어 term 집계를 첫 번째 인수로 지정하면 결과 열 배열은 용어의 빈도별로 정렬됩니다. timeslice 집계를 두 번째 인수로 사용하는 경우 행 배열은 날짜 또는 시간별로 정렬됩니다.
합계
일치하는 모든 문서에서 지정된 필드의 값을 추가합니다.
구문
sum(field)
예
| 제품 | 가격 |
|---|---|
| I 시리즈 | 2억 |
| J 시리즈 | 450 |
| X 시리즈 | 325 |
sum 집계 유형이 price 필드에 표 6에 표시된 값이 포함된 문서 집합에 적용되면 결과는 975 이 됩니다.
sum(price)=975
이 집계 유형은 터미널 작업을 수행합니다. 다른 집계와 결합할 경우 출력은 다음 집계를 위한 입력으로 사용되지 않습니다. 출력은 불연속형 그룹으로 반환됩니다.
기간
쿼리된 문서 집합에서 용어 또는 용어 집합의 빈도를 나타냅니다.
구문
term(field:{field_name})
다음과 같은 매개 변수를 선택적으로 지정할 수 있습니다:
-
count: 반환할 최대 용어 수를 지정합니다. -
name: 선택적으로 사용자 지정 이름을 포함할 수 있습니다. 요청에 관련성 정보가 포함된 경우 반환되지 않습니다. -
relevancy: 결과에 연관성 정보를 포함할지 여부를 나타내는 부울 값입니다. 연관성을 사용하여 쿼리에서 용어와 키워드 간의 연관성 수준을 나타내는 점수를 얻을 수 있습니다. 이 매개변수는 기본적으로false로 설정되어 있습니다. true로 설정하면 다음 필드도 반환됩니다:total_matching_documents: 컬렉션에서 지정된 필드에 해당 용어가 언급된 문서 수입니다.estimated_matching_results: 쿼리에서 반환되는 문서 집합에서 지정된 필드에 해당 용어가 있는 것으로 추정되는 문서 수입니다.
예
다음 예는 문서에서 인식된 엔티티의 텍스트를 반환하고 최대 10개의 용어를 반환하도록 지정합니다.
예를 들어,
term(enriched_text.entities.text,count:10)
relevancy 을 true 로 설정하면 결과에 관련성 점수가 표시됩니다. 관련성은 쿼리와 일치하는 다른 문서와 비교하여 빈도 수의 고유성 수준을 측정합니다. 관련성이 2.0으로 표시되면 두 데이터 포인트가 교차하는 횟수가 예상보다 2배 더 많다는 의미입니다.
더 많은 예제는 문서 그룹화하기 및 집계 유형 결합하기 를 참조하세요.
시분할
간격 세그먼트를 작성하기 위해 날짜를 사용하는 특수 히스토그램입니다.
구문
구문은 timeslice({field},{interval},{time_zone}) 입니다.
- 지정하는 필드에는
date데이터 유형이 있어야 합니다. 날짜 필드에 대한 자세한 내용은 날짜가 처리되는 방식 를 참조하세요. - 유효한 간격 값은
1second또는{n}seconds,1minute또는{n}minutes,1hour또는{n}hours,1day또는{n}days입니다,1week또는{n}weeks,1month또는{n}months,1year또는{n}years여기서 {n}은 숫자입니다. - 선택적으로
name매개변수를 포함하여 사용자 지정 이름을 포함할 수 있습니다.
예
다음 예는 각 일 값에 대한 일치 횟수를 보여줍니다.
timeslice(field:DATEA,interval:1day)
결과는 다음과 같습니다.
"aggregations": [
{
"type": "timeslice",
"field": "DATEA",
"interval": "1d",
"results": [
{
"key": 1262304000000,
"key_as_string": "2010-01-01T00:00:00.000Z",
"matching_results": 5
},
{
"key": 1262390400000,
"key_as_string": "2010-01-02T00:00:00.000Z",
"matching_results": 18
},
{
"key": 1262476800000,
"key_as_string": "2010-01-03T00:00:00.000Z",
"matching_results": 38
},
{
"key": 1262563200000,
"key_as_string": "2010-01-04T00:00:00.000Z",
"matching_results": 66
}
top_hits
조회 또는 강화의 스코어에 의해 순위가 지정된 문서를 리턴합니다. 조회 매개변수 또는 집계에서 사용될 수 있습니다.
구문
{aggregation}.top_hits({n})
예
다음 예는 도시별로 halt 이라는 용어에 대한 상위 히트 수를 반환합니다.
{
"query":"halt",
"aggregation": "term(CITY).top_hits(1)"
}
응답에는 해당 용어가 가장 많이 언급된 문서에 언급된 도시별로 그룹화된 halt 이라는 용어의 상위 쿼리 결과가 포함되어 있습니다. 기본적으로 10개의 결과가 반환됩니다. 10개 도시 각각에 대해 최고 점수를 받은 문서가 hit 개체로 반환됩니다. hit 배열의 각 hits 콘텐츠는 result 배열의 각 results 콘텐츠와 일치합니다. 결과의 순서만 다릅니다.
"aggregations": [
{
"type": "term",
"field": "CITY",
"results": [
{
"key": "LOS ALTOS",
"matching_results": 3,
"aggregations": [
{
"type": "top_hits",
"size": 1,
"hits": {
"matching_results": 3,
"hits": [
{
"document_id": "2bed19a9069442fd82542827ebe260d5_7015",
...
}
]
}
}
]
},
{
"key": "ANDOVER",
"matching_results": 2,
"aggregations": [
{
"type": "top_hits",
"size": 1,
"hits": {
"matching_results": 2,
"hits": [
{
"document_id": "2bed19a9069442fd82542827ebe260d5_18329",
...
}
]
}
}
]
},
...
{
"key":"ACTON",
"maatching_results": 1,
"aggregations": []
}
...
이 집계 유형은 터미널 작업을 수행합니다. 다른 집계와 결합할 경우 출력은 다음 집계를 위한 입력으로 사용되지 않습니다. 출력은 불연속형 그룹으로 반환됩니다.
경향
키워드 값의 과거 빈도 변화를 기반으로 지정된 기간 동안 키워드 값의 급격하고 예기치 않은 빈도 변화를 감지합니다.
Sytnax
trend(facet:{aggregation},time_segments:{aggregation})
첫 번째(facet) 집계는 다음 유형의 집계 중 하나여야 합니다:
termgroup_by
term 또는 group_by 집계에서 relevancy 매개 변수는 무시됩니다.
두 번째(time_segments) 집계는 timeslice 형식의 집계여야 합니다.
또는 다음 매개변수를 포함할 수도 있습니다:
show_estimated_matching_results:true: 결과에estimated_matching_results정보를 포함할지 여부를 나타냅니다. 이 필드에는 쿼리에서 반환되는 문서 집합에서 지정된 시간 간격 동안 지정된 필드에 해당 용어가 있거나 지정된 집계에서 조건을 충족하는 것으로 추정되는 문서 수가 포함되어 있습니다.show_total_matching_documents:true: 결과에total_matching_documents정보를 포함할지 여부를 나타냅니다. 이 필드에는 지정된 필드에 해당 용어가 언급되어 있거나 조건이 충족되는 컬렉션의 문서 수가 포함됩니다.
쿼리 요청당 하나의 트렌드 집계만 사용할 수 있으며 다른 집계와 결합할 수 없습니다.
예
다음 예는 다음 집계 결과의 조합을 사용하여 트렌드 지표 또는 트렌드 인덱스를 계산하는 예입니다:
- 용어(맛): 바닐라, 초콜릿, 민트
- timeslice(date, 1month): 2020년 1월, 2020년 2월, 2020년 3월, 2020년 4월, 2020년 5월, 2020년 6월
trend( facet: aggregation(<parameter>...), time_segments: timeslice(<parameter>...)),
show_estimated_matching_results: <true_or_false>, show_total_matching_documents: <true_or_false> )
결과 행렬은 표로 표현할 수 있습니다.
| 2020년의 달 | 맛: 바닐라 | 맛: 초콜릿 | 맛: 민트 |
|---|---|---|---|
| 1월 | 바닐라 x Jan | 초콜릿 X Jan | 민트 x 1월 |
| 2월 | 바닐라 x 2월 | 초콜릿 x 2월 | 민트 x 2월 |
| 3월 | 바닐라 x 3월 | 초콜릿 x 3월 | 민트 x 3월 |
| 4월 | 바닐라 x 4월 | 초콜릿 x 4월 | 민트 x 4월 |
| 5월 | 바닐라 x 메이 | 초콜릿 X 5월 | 민트 x 5월 |
| 6월 | 바닐라 x 준 | 초콜릿 X 준 | 민트 x 준 |
다음 샘플 응답에서 핵심 정보는 trend_indicator 값입니다. 추세 지표는 예상 평균 빈도와 비교하여 지정된 시간 간격 동안 지정된 패싯 값의 빈도 증가 비율을 측정합니다. 제외된 평균 빈도는 가중 산술 평균을 사용하여 주어진 패싯 값의 과거 시간 간격 빈도 변화를 기반으로 계산됩니다.
표준화된 잔차 값이 -2보다 작으면 관측된 주파수가 예상 주파수보다 작다는 의미입니다. 2보다 크면 관측된 주파수가 예상 주파수보다 크다는 뜻입니다. 표준화된 잔여가 예상 빈도보다 3 이상 크거나 작으면 비정상적인 일이 발생하고 있으며 조사할 가치가 있는 이상 징후가 있을 수 있음을 의미합니다.
예를 들어 5월에 vanilla 맛에 대한 예상 피드백 제출 수는 이전에(1월부터 4월까지) 받은 피드백 제출 수에서 계산됩니다. 결과는 5.341 입니다. 5월의 실제 피드백 제출 건수는 10 입니다. 그 결과 바닐라 맛의 피드백 제출 건수가 예상보다 약 2배 더 많은 것으로 나타났습니다. 표준화된 잔여값은 2.016 로 예상보다
크지만 비정상적인 수준은 아닙니다.
{
"aggregations": [
{
"type": "trend",
"facet": "term(flavor),",
"time_segments": "timeslice(date, 1month)",
"show_estimated_matching_results": true,
"show_total_matching_documents": true,
"results": [
{
"aggregations": [
{
"type": "term",
"field": "flavor",
"results": [
{
"key": "vanilla",
"matching_results": 36,
"aggregations": [
{
"type": "timeslice",
"field": "date",
"results": [
{
"key": 1577836800000,
"key_as_string": "2020-01-01T00:00:00.000Z",
"matching_results": 4,
"trend_indicator": 0.0,
"total_matching_documents": 7,
"estimated_matching_results": 0.0
},
{
"key": 1588291200000,
"key_as_string": "2020-05-01T00:00:00.000Z",
"matching_results": 10,
"trend_indicator": 2.016106745,
"total_matching_documents": 12,
"estimated_matching_results": 5.340760209
},
{
"key": 1590969600000,
"key_as_string": "2020-06-01T00:00:00.000Z",
"matching_results": 5,
"trend_indicator": -0.763212711,
"total_matching_documents": 11,
"estimated_matching_results": 7.022515985
}
]
}
]
},
{
"key": "chocolate",
"matching_results": 10,
"aggregations": [...]
},
{
"key": "mint",
"matching_results": 25,
"aggregations": [...]
...
}
주제
키워드 값의 빈도가 지정된 기간 동안 예상 평균에서 얼마나 벗어나는지 감지합니다. 이 집계 유형은 이전 기간의 데이터를 사용하지 않습니다. 지정된 기간 동안 다른 키워드 값의 빈도 수 평균을 사용하여 지수를 계산합니다.
구문
topic(facet:{aggregation},time_segments:{aggregation})
첫 번째(facet) 집계는 다음 유형의 집계 중 하나여야 합니다:
termgroup_by
term 또는 group_by 집계에서 relevancy 매개 변수는 무시됩니다.
두 번째(time_segments) 집계는 timeslice 형식의 집계여야 합니다.
또는 다음 매개변수를 포함할 수도 있습니다:
show_estimated_matching_results:true: 결과에estimated_matching_results정보를 포함할지 여부를 나타냅니다. 이 필드에는 쿼리에서 반환되는 문서 집합에서 지정된 시간 간격 동안 지정된 필드에 해당 용어가 있거나 지정된 집계에서 조건을 충족하는 것으로 추정되는 문서 수가 포함되어 있습니다.show_total_matching_documents:true: 결과에total_matching_documents정보를 포함할지 여부를 나타냅니다. 이 필드에는 지정된 필드에 해당 용어가 언급되어 있거나 조건이 충족되는 컬렉션의 문서 수가 포함됩니다.
쿼리 요청당 하나의 토픽 집계만 사용할 수 있으며 다른 어떤 집계와도 결합할 수 없습니다.
예
{
"query: like",
"aggregation": "topic( facet: term(flavor), time_segments: timeslice(date, 1month), show_estimated_matching_results: true, show_total_matching_documents: true )"
}
용어 집계 예제에 사용된 것과 동일한 데이터 세트 및 집계를 사용하면 결과는 다음과 같이 표시될 수 있습니다.
topic_indicator 값이 trend_indicator 집계에서 반환되는 trend 값과 다르다는 것을 알 수 있습니다. 둘 다 실제 주파수와 예상 주파수로 계산되지만, 예상 주파수가 다르게 계산되기 때문에 차이가 있습니다. trend 집계에서 5월에 바닐라 맛 아이스크림에 대한 예상 피드백 제출 빈도는 이전(1월부터 4월까지)
바닐라 맛에 대해 받은 피드백 제출 수와 5월에 모든 맛에 대해 받은 총 피드백 제출 수로 계산됩니다. 그러나 topic 집계에서 5월에 바닐라 맛 아이스크림에 대한 예상 피드백 제출 빈도는 바닐라 맛에 대해 접수된 피드백 제출 수와 5월에 모든 맛에 대해 접수된 총 피드백 제출 수로 계산됩니다. 이 예에서 예상 빈도 결과는 12.169, 실제 빈도는 10,
topic_indicator 은 -0.621777032 입니다.
{
"aggregations": [
{
"type": "topic",
"facet": "term(flavor)",
"time_segments": "timeslice(date, 1month)",
"show_estimated_matching_results": true,
"show_total_matching_documents": true,
"results": [
{
"aggregations": [
{
"type": "term",
"field": "flavor",
"results": [
{
"key": "vanilla",
"matching_results": 36,
"aggregations": [
{
"type": "timeslice",
"field": "date",
"results": [
{
"key": 1577836800000,
"key_as_string": "2020-01-01T00:00:00.000Z",
"matching_results": 4,
"topic_indicator": -0.027972712,
"total_matching_documents": 7,
"estimated_matching_results": 4.056338028
},
{
"key": 1588291200000,
"key_as_string": "2020-05-01T00:00:00.000Z",
"matching_results": 10,
"topic_indicator": -0.621777032,
"total_matching_documents": 12,
"estimated_matching_results": 12.16901408
},
{
"key": 1590969600000,
"key_as_string": "2020-06-01T00:00:00.000Z",
"matching_results": 5,
"topic_indicator": -0.787665504,
"total_matching_documents": 11,
"estimated_matching_results": 7.098591549
}
]
}
]
},
{
"key": "chocolate",
...
},
{
"key": "mint",
...
}
}
unique_count
콜렉션에서 지정된 필드의 고유 인스턴스 수를 리턴합니다.
구문
unique_count(field)
예
다음 집계는 쿼리에서 인식되는 고유한 보강 유형 수를 요청합니다.
unique_count(enriched_text.keyword.type)
결과는 17개의 일치하는 결과가 있음을 나타냅니다. 17개 문서에는 14개의 엔티티 유형이 언급되어 있습니다.
{
"matching_results": 17,
"retrieval_details": {
"document_retrieval_strategy": "untrained"
},
"aggregations": [
{
"type": "unique_count",
"field": "enriched_text.entities.type",
"value": 14.0
}
],
"results": []
}
이 집계 유형은 터미널 작업을 수행합니다. 다른 집계와 결합할 경우 출력은 다음 집계를 위한 입력으로 사용되지 않습니다. 출력은 불연속형 그룹으로 반환됩니다.
다음 예제에서 집계 매개변수는 가장 자주 언급된 처음 45개의 엔티티를 표시하도록 결과를 요청합니다. 엔터티별로 해당 용어가 언급된 문서 수와 해당 용어가 총 몇 번 나오는지를 나타냅니다.
term(enriched_text.entities.text,count:45).unique_count(enriched_text.entities.type)
결과에는 용어에 대한 다음 그룹 PostgreSQL 과 같은 여러 집계가 포함됩니다. 집계 결과 이 용어는 4개의 문서에 등장하며 12번 언급된 것으로 나타났습니다.
{
"key": "PostgreSQL",
"matching_results": 4,
"aggregations": [
{
"type": "unique_count",
"field": "enriched_text.entities.type",
"value": 12.0
}
]
}