Elasticsearch 집합의 Range 구간 집합
Elasticsearch는 다양한 집합 방식을 제공하여 사용자가 정보 통계와 분류를 신속하게 하는 데 도움을 줄 수 있다. 본고는 주로 Range 구간 집합을 어떻게 사용하는지 설명한다.
가장 간단한 예는 한 학급 시험 60점 이하, 60~80점, 80~100점을 통계하려면 ES에서 명령 하나만 있으면 쉽게 통계할 수 있는데...
추가 자료 참조: Elasticsearch 문서 번역
집합 예
앞의 예에 따라 다음 명령을 수행할 수 있습니다.
{
"aggs":{
"grade_ranges":{
"range":{
"field":"grade",
"ranges":[
{"to":60},
{"from":60,"to":80},
{"from":80}]
}
}
}
}
다음과 같은 결과를 얻을 수 있습니다.
{
...
"aggregations":{
"price_ranges":{
"buckets":[
{
"to":60,
"doc_count":2
},
{
"from":60,
"to":80,
"doc_count":32
},
{
"from":80,
"doc_count":14
}
]
}
}
}
복잡한 예, 각 구간의 이름을 지정합니다
keyed:true를 설정하여 각 구간을 특정 이름으로 되돌릴 수 있습니다.
{
"aggs":{
"price_ranges":{
"range":{
"field":"price",
"keyed":true,
"ranges":[
{"to":50},
{"from":50,"to":100},
{"from":100}
]
}
}
}
}
기본적으로 구간별로 이름이 지정됩니다.
{
...
"aggregations":{
"price_ranges":{
"buckets":{
"*-50.0":{
"to":50,
"doc_count":2
},
"50.0-100.0":{
"from":50,
"to":100,
"doc_count":4
},
"100.0-*":{
"from":100,
"doc_count":4
}
}
}
}
}
물론 구간의 이름도 지정할 수 있습니다.
{
"aggs":{
"price_ranges":{
"range":{
"field":"price",
"keyed":true,
"ranges":[
{"key":"cheap","to":50},
{"key":"average","from":50,"to":100},
{"key":"expensive","from":100}
]
}
}
}
}
스크립트 사용
다른 집합과 유사하게 Range 집합은 스크립트 사용을 지원합니다.
{
"aggs":{
"price_ranges":{
"range":{
"script":"doc['price'].value",
"ranges":[
{"to":50},
{"from":50,"to":100},
{"from":100}
]
}
}
}
}
파일 스크립트나 스크립트 값의 조작은 모두 다른 것과 차이가 많지 않기 때문에 더 이상 군더더기 없이 설명할 필요가 없다.
중합 중첩
보통 구간 집합에서는 플러그인 집합을 한다. 예를 들어 우리는 각 구간에서 통계stats 집합을 한다.
{
"aggs":{
"price_ranges":{
"range":{
"field":"price",
"ranges":[
{"to":50},
{"from":50,"to":100},
{"from":100}
]},
"aggs":{
"price_stats":{
"stats":{
"field":"price"
}
}
}
}
}
}
결과는 다음과 같습니다.
{
"aggregations":{
"price_ranges":{
"buckets":[
{
"to":50,
"doc_count":2,
"price_stats":{
"count":2,
"min":20,
"max":47,
"avg":33.5,
"sum":67
}
},
{
"from":50,
"to":100,
"doc_count":4,
"price_stats":{
"count":4,
"min":60,
"max":98,
"avg":82.5,
"sum":330
}
},
{
"from":100,
"doc_count":4,
"price_stats":{
"count":4,
"min":134,
"max":367,
"avg":216,
"sum":864
}
}
]
}
}
}
집합 필드를 지정하지 않으면 기본적으로 Range 집합 필드를 기준으로 집계됩니다.
{
"aggs":{
"price_ranges":{
"range":{
"field":"price",
"ranges":[
{"to":50},
{"from":50,"to":100},
{"from":100}
]
},
"aggs":{
"price_stats":{
"stats":{}
}
}
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.