Elasticsearch--Aggregation 상세 요약(집계)

30901 단어 Elasticsearch
Elasticsearch의 Aggregation 기능도 매우 강력합니다.
Aggregation은 모두 세 가지로 나뉘는데 그것이 바로 Metric Aggregations, Bucket Aggregations, Pipeline Aggregations이다.다음은 각각 정리할 것이다.
아래의 모든 내용은 홈페이지에서 나온다. 원래의 맛을 좋아하는 것은 아래의 사이트 주소를 참조하고, 영어를 좋아하지 않는 것은 본인의 총결산을 참조한다.
홈페이지(권위자):https://www.elastic.co/guide/en/elasticsearch/reference/2.4/search-aggregations-metrics-avg-aggregation.html
#########################################
1、Metric Aggregations
1>Avg Aggregation#필드 평균값 계산
{
    "aggs" : {
        "avg_grade" : { "avg" : { "field" : "grade" } }
    }
}
예:
GET index/type/_search?search_type=count {   "query": {     "match_all": {}   },   "aggs": {     "avg_grade": {       "avg": {         "field": "grade"      }     }   } }
매개 변수:search_type=count는aggregation 부분만 되돌려줍니다.
2>Cardinality Aggregation #은 필드의 고유 값을 계산합니다.sql의distinct
{
    "aggs" : {
        "author_count" : {
            "cardinality" : {
                "field" : "author"
            }
        }
    }
}
예:
GET index/type/_search?search_type=count {   "query": {     "match_all": {}   },   "aggs": {     "author_count": {       "cardinality": {         "field": "author"      }     }   } }
3>Extended Stats Aggregation# 필드의 다른 속성은 최대 최소, 방차 등을 포함한다.
{
    "aggs" : {
        "grades_stats" : { "extended_stats" : { "field" : "grade" } }
    }
}

예: GET index/type/_search?search_type=count {   "query": {     "match_all": {}   },   "aggs": {     "grades_stats": {       "extended_stats": {         "field": "grade"      }     }   } }
반환값:
{
    ...

    "aggregations": {
        "grade_stats": {
           "count": 9,
           "min": 72,
           "max": 99,
           "avg": 86,
           "sum": 774,
           "sum_of_squares": 67028,
           "variance": 51.55555555555556,
           "std_deviation": 7.180219742846005,
           "std_deviation_bounds": {
            "upper": 100.36043948569201,
            "lower": 71.63956051430799
           }
        }
    }
}

4>Geo Bounds Aggregation#은 모든 지리 좌표가 하나의 직사각형 구역에 떨어진다고 계산합니다.예를 들어 조양 구역에 많은 호텔이 있다면 나는 직사각형으로 이 호텔들을 모두 둘러싸고 범위를 볼 수 있다.
{
    "query" : {
        "match" : { "business_type" : "shop" }
    },
    "aggs" : {
        "viewport" : {
            "geo_bounds" : {
                "field" : "location", 
                "wrap_longitude" : true 
            }
        }
    }
}

예:
GET index/type/_search?search_type=count {   "query": {     "match_all": {}   },   "aggs": {     "viewport": {       "geo_bounds": {         "field": "location",         "wrap_longitude": true       }     }   } }
반환값:
{
    ...

    "aggregations": {
        "viewport": {
            "bounds": {
                "top_left": {
                    "lat": 80.45,
                    "lon": -160.22
                },
                "bottom_right": {
                    "lat": 40.65,
                    "lon": 42.57
                }
            }
        }
    }
}

주석: 이 사각형 영역의 왼쪽 상단 좌표와 오른쪽 하단 좌표가 이미 제시되었습니다.즉, 네가 알아낸 데이터는 모두 이 지리적 범위 내에 떨어질 것이다.
5>Geo Centroid Aggregation#은 모든 문서의 대략적인 중심점을 계산합니다.예를 들어 어떤 지역에서 절도 범죄가 매우 많다면, 나는 이렇게 하면 이 지역이 도대체 어느 점(거리)에서 절도 사건이 가장 날뛰는 것을 볼 수 있다.
{
    "query" : {
        "match" : { "crime" : "burglary" }
    },
    "aggs" : {
        "centroid" : {
            "geo_centroid" : {
                "field" : "location" 
            }
        }
    }
}

예:
GET index/type/_search?search_type=count {   "query": {     "match_all": {}   },   "aggs": {     "centroid": {       "geo_centroid": {         "field": "location"      }     }   } }
6>Max Aggregation#최대값 구하기
{
    "aggs" : {
        "max_price" : { "max" : { "field" : "price" } }
    }
}
예:
GET index/type/_search?search_type=count {   "query": {     "match_all": {}   },   "aggs": {     "max_price": {       "max": {         "field": "price"      }     }   } }
7>Min Aggregation#최소값 구하기
{
    "aggs" : {
        "min_price" : { "min" : { "field" : "price" } }
    }
}
예:
GET index/type/_search?search_type=count {   "query": {     "match_all": {}   },   "aggs": {     "min_price": {       "min": {         "field": "price"      }     }   } }
8>Percentiles Aggregation # 백분율 통계.당신의 사이트의 모든 페이지를 볼 수 있습니다.로드 시간 차이.
{
    "aggs" : {
        "load_time_outlier" : {
            "percentiles" : {
                "field" : "load_time" 
            }
        }
    }
}
예:
GET index/type/_search?search_type=count {   "query": {     "match_all": {}   },   "aggs": {     "load_time_outlier": {       "percentiles": {         "field": "load_time"      }     }   } }
복귀: 이 사이트의 75% 페이지가 29밀리초 정도에 로드되었음을 알 수 있습니다.페이지의 5%가 60밀리초를 넘었다.
{
    ...

   "aggregations": {
      "load_time_outlier": {
         "values" : {
            "1.0": 15,
            "5.0": 20,
            "25.0": 23,
            "50.0": 25,
            "75.0": 29,
            "95.0": 60,
            "99.0": 150
         }
      }
   }
}

9>Percentile Ranks Aggregation #15밀리초와 30밀리초 안에 몇 개의 페이지가 불러왔는지 보십시오.
{
    "aggs" : {
        "load_time_outlier" : {
            "percentile_ranks" : {
                "field" : "load_time", 
                "values" : [15, 30]
            }
        }
    }
}

예:
GET index/type/_search?search_type=count {   "query": {     "match_all": {}   },   "aggs": {     "load_time_outlier": {       "percentile_ranks": {         "field": "load_time",         "values": [           15,           30         ]       }     }   } }
반환: 15밀리초 동안 92% 페이지가 로드되었습니다.30밀리초 동안 기본적으로 로드가 완료됩니다.
{
    ...

   "aggregations": {
      "load_time_outlier": {
         "values" : {
            "15": 92,
            "30": 100
         }
      }
   }
}

10>Stats Aggregation#최대, 최소, 및, 평균.함께 구하다
{
    "aggs" : {
        "grades_stats" : { "stats" : { "field" : "grade" } }
    }
}

예:
GET index/type/_search?search_type=count {   "query": {     "match_all": {}   },   "aggs": {     "grades_stats": {       "stats": {         "field": "grade"      }     }   } }
11>Sum Aggregation #Cloud
 "aggs" : {
        "intraday_return" : { "sum" : { "field" : "change" } }
    }
예:
GET index/type/_search?search_type=count {   "query": {     "match_all": {}   },   "aggs": {     "intraday_return": {       "sum": {         "field": "change"      }     }   } }
12 > Top hits Aggregation # 에서 자주 사용하는 통계입니다.각 그룹의 앞 n 개의 데이터를 가져옵니다.sql에서 그룹by를 꺼낸 후 앞 n줄을 꺼내는 것과 같습니다.
{
    "aggs": {
        "top-tags": {
            "terms": {
                "field": "tags",
                "size": 3
            },
            "aggs": {
                "top_tag_hits": {
                    "top_hits": {
                        "sort": [
                            {
                                "last_activity_date": {
                                    "order": "desc"
                                }
                            }
                        ],
                        "_source": {
                            "include": [
                                "title"
                            ]
                        },
                        "size" : 1
                    }
                }
            }
        }
    }
}
예: 100조를 취하고 각 조는 첫 번째 조만 취한다.bain을 만나기 위해서는order와_소스, 스스로 테스트하세요.
GET index/type/_search?search_type=count {   "query": {     "match_all": {}   },   "aggs": {     "all_interests": {       "terms": {         "field": "zxw_id",         "size": 100       },       "aggs": {         "top_tag_hits": {           "top_hits": {             "size": 1           }         }       }     }   } }
14>Value Count Aggregation # 수량 통계, 이 필드에 모두 몇 개의 다른 수치가 있는지 보십시오.
{
    "aggs" : {
        "grades_count" : { "value_count" : { "field" : "grade" } }
    }
}
예:
GET index/type/_search?search_type=count {   "query": {     "match_all": {}   },   "aggs": {     "grades_count": {       "value_count": {         "field": "grade"      }     }   } }
2. Bucket Aggregations는 두 번째 유형의 통계이다.후속도 베껴 쓰니 여러분 직접 보세요.문제 해결 [email protected]메일을 보내다.
웹 사이트:https://www.elastic.co/guide/en/elasticsearch/reference/2.4/search-aggregations-bucket-children-aggregation.html
3. Pipeline Aggregations #는 세 번째 유형의 집합입니다.

좋은 웹페이지 즐겨찾기