elasticsearch(7) 집합 통계 - 그룹 집합
7556 단어 elasticsearch
직사각형 집합
GET /index/type/_search
{
"size": 0,
"aggs": {
"test_histogram": {
"histogram": {
"field": "field1",
"interval": 5
}
}
}
}
반환값은 [15,20)구간 내의 값이 1개,[20,25)구간 내의 값이 0개,[25,30)구간 내의 값이 1개,[30,35)구간 내의 값이 1개라는 것을 나타낸다.
{
"aggregations": {
"test_histogram": {
"buckets": [
{
"key": 15,
"doc_count": 1
},
{
"key": 20,
"doc_count": 0
},
{
"key": 25,
"doc_count": 1
},
{
"key": 30,
"doc_count": 1
}
]
}
}
}
1. 직사각형 필터링 규칙
예를 들어price 필드가 있는데 이 필드는 상품의 가격을 설명합니다. 지금은 5마다 통을 만들고 구간마다 몇 개의 문서(상품)가 있는지 통계하고 싶습니다.
만약 한 상품의 가격이 32라면, 그것은 30의 통에 넣을 것이다. 계산의 공식은 다음과 같다.
rem = value % interval
if (rem < 0) {
rem += interval
}
bucket_key = value - rem
위의 방법을 통해 문서가 어느 통에 속하는지 확정할 수 있다.
그러나 일부 문제점도 존재한다. 위의 방법은 정형 데이터에 대한 것이기 때문에 필드가 부동점수라면 먼저 정형으로 전환한 다음에 위의 방법으로 계산해야 한다.문제가 생겼습니다. 정수는 괜찮습니다. 만약 이 값이 음수라면 계산 오류가 발생할 것입니다.예를 들어 한 필드의 값은 -4.5이고 정형을 변환할 때 -4로 변환된다.그러면 위의 계산에 따라 -4의 통에 넣지만, 사실 -4.5는 -6의 통에 넣어야 한다.
2、extended_bounds
extended_bounds
직사각형 집합을 강제로 지정한 최소값부터 그룹을 만들 수 있습니다. 문서가 존재하지 않더라도 최대값이 될 때까지 그룹을 만들 수 있습니다.또한
extended_bounds
그룹을 필터링하지 않습니다. 실제 그룹이 extended_bounds
의 최소값 최대값 구간에 없더라도 직사각형 집합은 실제 최소값 또는 최대값으로 그룹을 만듭니다.GET /index/type/_search
{
"size": 0,
"aggs": {
"test_histogram": {
"histogram": {
"field": "field1",
"interval": 5,
"extended_bounds":{
"min": 0,
"max": 20
}
}
}
}
}
3, 정렬
직사각형으로 그룹화된 키 정렬:
GET /index/type/_search
{
"size": 0,
"aggs": {
"test_histogram": {
"histogram": {
"field": "field1",
"interval": 5,
"order": {
"_key": "asc"
}
}
}
}
}
직사각형으로 그룹화된 value 정렬:
GET /index/type/_search
{
"size": 0,
"aggs": {
"test_histogram": {
"histogram": {
"field": "field1",
"interval": 5,
"order": {
"_count": "desc"
}
}
}
}
}
4, 오프셋
그룹은 기본적으로 0부터
interval
간격으로 진행되며 offset
그룹의 시작 위치를 수정할 수 있습니다.GET /index/type/_search
{
"size": 0,
"aggs": {
"test_histogram": {
"histogram": {
"field": "field1",
"interval": 5,
"offset": 8
}
}
}
}
날짜 직사각형 집합
GET /index/type/_search
{
"size": 0,
"aggs": {
"test_date_histogram": {
"date_histogram": {
"field": "field1",
"interval": "1M",
"format": "yyyy-MM-dd"
}
}
}
}
interval
지원하는 표현식은 year,month,week,day,hour,quarter,minute,second입니다.날짜 범위 집합
GET /index/type/_search
{
"size": 0,
"aggs": {
"test_date_range": {
"date_range": {
"field": "field1",
"format": "yyyy-MM-dd",
"ranges": [
{
"from": "now-10M/M",
"to": "now"
}
]
}
}
}
}
범위 집합
GET /index/type/_search
{
"size": 0,
"aggs": {
"test_range": {
"range": {
"field": "field1",
"ranges": [
{
"from": 0,
"to": 10
}
]
}
}
}
}
필터 집합
GET /index/type/_search
{
"size": 0,
"aggs": {
"test_filter": {
"aggs": {
"test_histogram": {
"histogram": {
"field": "field1",
"interval": 10
}
}
},
"filter": {
"range": {
"field2": {
"gte": 10
}
}
}
}
}
}
다중 필터 집합
대량 필터 집합과 같다.
GET /index/type/_search
{
"size": 0,
"aggs": {
"test_filters": {
"aggs": {
"test_histogram": {
"histogram": {
"field": "field1",
"interval": 10
}
}
},
"filters": {
"filters": {
"test_range": {
"range": {
"field2": {
"gte": 10
}
}
},
"test_range2" :{
"range": {
"field2": {
"lte": 20
}
}
}
}
}
}
}
}
빈 값 집합
GET /testindex/testtype/_search
{
"size": 0,
"aggs": {
"test_missing": {
"missing": {
"field": "field1"
}
}
}
}
색인 단어 집합
필드의 값 통계를 작성하여 집합합니다.
GET /index/type/_search
{
"size": 0,
"aggs": {
"test_terms": {
"terms": {
"field": "field1"
}
}
}
}
1. 규모
size
매개 변수를 통해 되돌아오는 그룹 수량을 지정하고 size
0으로 설정하면 규모 Integer.MAX_VALUE
가 됩니다.2, 정렬
order
그룹 정렬 방식을 사용자 정의하여 기본적으로 그룹 doc_count
값에 따라 정렬합니다.GET /testindex/testtype/_search
{
"size": 0,
"aggs": {
"test_terms": {
"terms": {
"field": "field1",
"size": 10,
"order": {
"_count": "desc"
}
}
}
}
}
3. 필터링
GET /testindex/testtype/_search
{
"size": 0,
"aggs": {
"test_terms": {
"terms": {
"field": "field1",
"size": 10,
"include": "*",
"exclude": "water.*"
}
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
kafka connect e elasticsearch를 관찰할 수 있습니다.No menu lateral do dashboard tem a opção de connectors onde ele mostra todos os clusters do kafka connect conectados atu...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.